UNIX 시스템에서 파이프의 올바른 사용법을 이해하는 데 문제가 있습니다. 하위 프로세스를 만드는 주 프로세스가 있습니다. 자식 프로세스는 아버지와 다른 프로그램을 실행해야하며, 일부 작업을 수행해야하며 그 결과 자식은 결과를 아버지에게 전달해야합니다. 그러나 자식 프로세스에서 터미널에서이 작업의 부분 결과를 인쇄해야합니다. 테스트 프로그램을 사용하여 테스트 중이지만 지금 당장 막혔습니다. 이 메인 테스트 프로그램표준 출력 및 exec에서 파이프 사용
TEST.C
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main(){
int mypipe[2];
pid_t pid;
char readbuffer[6];
pipe(mypipe);
if((pid = fork()) == 0){
close(mypipe[0]);
dup2(mypipe[1], STDOUT_FILENO);
execlp("./proc", "./proc", NULL);
} else {
wait(-1);
close(mypipe[1]);
read(mypipe[0], readbuffer, sizeof(readbuffer));
printf("%s", readbuffer);
}
}
그리고 ./proc 프로그램의 C 파일 것은 이것이다 :이 솔루션은 시저와 PROC.C
#include <stdio.h>
int main(int argc, char* argv[]){
printf("check\n");
return 0;
}
프로그램이 터미널에서 아무 것도 인쇄 할 수 없습니다. 주 프로그램이 거기에서 읽을 수 있도록 어떻게 터미널에서 그리고 파이프에 인쇄 할 proc 프로그램을 만들까요 ??? 감사합니다.
다른 방법으로 사용할 수 있습니까? – Astinog