fgets()으로 파일을 읽는데 파일 라인수보다 더 많이 리턴됩니다

s0me의 이미지

while(fgets(....) != NULL)
{

     pipe(..);


     pid_t pid = fork();

     if(pid == 0)
     {
         close(p[0]); close(1); dup(p[1]);

          execv(...cmd);
     }
      else if(pid == -1)  perror("fork");

     read(0, ...... );


}

파일을 한줄 읽고 ...파일에 적혀있는 커맨드를 실행해서(execv)
결과값을 파이트로 가져오는 형태입니다.

문제는 파일은 4줄인데 총 7번 실행이 되고 있습니다.

fork() 부분을 주석처리하면 정확하게 4번 루프가 돌구요.

흠... fork()가 어디가 세는것 같기도 한데..

셀만한데가 보이질 않네요.

etermory의 이미지

execv(); 다음에 exit(); 를 하면 되지 않을까요?