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)을 다른 명령으로 보냄
예 파이프와 포크를 사용해야합니다. –