pipe

90
points
points
[질문] 쓰레드간 통신에 PIPE 사용이 가능할까요?
Submitted by onrun on 목, 2007/02/08 - 8:06pm.안녕하세요.
부모프로세스와 자식 쓰레드 2개 사이에 통신용도로 pipe 를 3개 만들어서 사용하고 있습니다.
일단 data 교환도 잘되고 해서 이렇게 써도 되는줄 알고 그냥 썼습니다.
그런데 long run 시 혹은 종종 segmentaion fault 가 나서요.
혹시 pipe 를 잘 못 사용한건 아닌지 궁금합니다.

7344
points
points
popen 버퍼링을 없애고 싶어요.
Submitted by purewell on 화, 2006/05/30 - 3:59pm.fp = popen("tail -f /var/log/mylog.log", "r");
fd = fileno(fp);
setbuf(fp, NULL);
while (1)
{
// 중략
FD_ZERO(&rtest);
FD_SET(fd, &rtest);
select (FD_SETSIZE, &rtest, NULL, NULL, NULL);
if (FD_ISSET(fd, &rtest)) { read from fd; write to stderr; }
}위와 같은 구문에서 천천히 자라고 있는 엄청난 크기의 로그 파일을 읽어서 화면(표준오류로 하여 버퍼링 없음)에 찍어주는 것인데, 중간에 버퍼링을 하는 것 같습니다. 분명 로그를 만드는 쪽에서는 fflush를 하든 버퍼링을 쓰지 않든 해서 완벽한 한 줄을 로그파일에 기록하는데 화면에 찍히는 것은 끝부분을 완결하지 않은 줄입니다.
