/* * Exemplo de uso de pipes. * cmd1 | cmd2 args2 * * Nesta versão simplificada, cmd1 não pode * receber argumentos. */ #include #include #include #include #include #include int main (int argc, char** argv) { int mypipe[2]; if (argc < 3) exit(-1); pipe (mypipe); /* Cria o pipe mypipe. mypipe[0] - leitura mypipe[1] - escrita */ dup2(mypipe[0], 0); if (fork() == 0) execve (argv[2], &argv[2],0); else { dup2(mypipe[1], 1); if (fork() == 0) { /* Pai (shell) */ wait(NULL); wait(NULL); } else { printf("Erro em cmd2\n" ); } else { argv[2] = NULL; /* cmd2 não é necessário */ execve(argv[1], &argv[1], 0); printf("Erro em cmd1\n"); } return 0; }