0
void execute_command_pipe(char * command_from, char * command_to, char ** args_from, char ** args_to) {
pipe(pipefd);
int pid = fork();
close(pipefd[0]);
if (pid == 0) {
//close(STDOUT_FILENO);
dup2(pipefd[1], STDOUT_FILENO);
int rv1 = execv(get_contain_dir(command_from), args_from);
close(pipefd[1]);
} else {
close(pipefd[1]);
dup2(pipefd[0], STDIN_FILENO);
int rv2 = execv(get_contain_dir(command_to), args_to);
close(pipefd[0]);
}
}
例如,如果我想要做相當於ls | grep測試,父線程將運行grep監聽STDIN上的輸入,並且子線程會將ls的輸出寫入STDTOUT。發送一個命令(execv)的輸出到另一個
是的我需要使用管道和叉子。 –