파이프 질문입니다.
글쓴이: luftpalen / 작성시간: 수, 2006/11/22 - 10:19오후
차일드 프로세스를 만들어서 그쪽에다 명령을 주려고 파이프를 연결하는데, 잘 되지 않더군요.
pid_t fork_result;
if(pipe(file_pipe) == 0)
{
fork_result = fork();
if( fork_result == -1)
{
fprintf(stderr,"Fork Error!!\n");
exit(1);
}
if( fork_result == 0)
{
close(0);
dup( file_pipe[0]);
close(file_pipe[0]);
close(file_pipe[1]);
execl("test","test",NULL);
}else{
close(file_pipe[0]);
write(file_pipe[1], msg, strlen(msg));
}
대충 이런 식이고 fork() 시킬 차일드 프로세스는 단순히
read(stdin, buf, 1); 이런 식으로 읽기만 하는데,
차일드 프로세스는 읽지를 못하더군요. 제가 잘못해서 그러니까 안되는건데, 어디가 잘못된지 모르겠더군요. 조언 부탁드립니다.
Forums:
popen은 어떨까요?
popen은 어떨까요?
전 일단 C를 잘
전 일단 C를 잘 모릅니다.
혹시 이 부분이 자식 프로세스에 내용을 전달하는 작업이라면 쓰기 후에 닫아주는 작업이 뒤따라와야 되지 않을까 하는 생각이 듭니다.
파이프는 일반 파일과 다른게 끄트머리를 명시적으로 알수가 없으니 닫아줘야 read의 동작이 끝나고 리턴을 할 것 같다는 생각이 스쳤습니다.
--
마잇
--
마잇
댓글 달기