2014-03-06 4 views
0

그래서 부모가 파일을 열고 버퍼에 내용을 읽고 쓰기 끝 (fd [1])에서 읽기 끝까지 버퍼를 보내는 fork() 을 사용했습니다. fd [0])grep을 표준 입력으로 사용

하위 프로세스는 버퍼를 읽습니다. 나는 fd [0]에있는 모든 것을 stdin으로 리다이렉션하기를 원하기 때문에 유닉스 명령을 사용할 수있다. 예를 들면 :

// in child process 
dup2(fd[0], 0); // 0 is STDIN 

// Don't know what to do here 

execl("/bin/grep/", "grep", "hello", NULL); // find the string 'hello' and operate on the content coming from stdin 

어떤 도움을 주시면 감사하겠습니다.

답변

0

꽤 괜찮은 것 같습니다. 은 아마 당신은 dup2 후 일부 FDS를 닫을 수 :

// in child process 
dup2(fd[0], STDIN_FILENO); 
close(fd[0]); 
close(fd[1]); 

편집 :

오타 될 것 같습니다 : "/bin/grep/"

그것은해야한다 : "/bin/grep"

+0

중 하나가 작동하지 않습니다. 나는 dup2()를 호출하기 전에 fd [1]를 닫고 나서 자식이 종료되기 전에 fd [0]을 닫습니다. 그러나 그것도 작동하지 않았습니다. –

+0

@ Phil Kurtis : 답변을 업데이트했습니다. – SKi

관련 문제