popen()에 의해서 실행되고 있는 프로세스를 강제로 종료시키는 방법은 없을까요?
글쓴이: leo83820 / 작성시간: 월, 2009/06/01 - 1:02오후
FILE *fp = NULL; int state = 0; char buf[MAXLINE]; fp = popen(EXECSTR, "r"); if ( fp == NULL ) { perror("errorno :"); return -1; } while ( fgets(buf, MAXLINE, fp) != NULL ) { printf("%s\n", buf); } state = pclose(fp); printf("state is %d\n", state); if ( state != 0 ) { return -1; }
이러한 방법으로 외부 프로그램을 실행시켜서 사용하고 있었습니다.
그런데 실행시킨 프로그램이 오작동을하거나 할때 시간이 많이 소모되는 때가 있어서
일정시간동안 응답이 없으면 그 프로세스를 강제로 종료시켜야 할 일이 생겼는데요
여기저기 찾아보아도 어떻게 해야할지 모르겠습니다.
안되는건가요?? ㅠ.ㅠ
Forums:
문제라고 생각할 때 pclose 하면 되지 않나요?
오랜만이라 기억이 잘 안 나네요.
pclose()하면 프로세스가 끝날때 까지 wait하는 것으로 알고 있습니다..
wait하고 있는 중에 문제가 생기면
그냥 kill시키고 싶은데요..
역시 그냥 pipe, fork, execl 요렇게 사용하는 해서 할 수 있는 방법 밖에 없을까요??
아.. 그런데 fork하고 execl을 사용했을때 부모 프로세스 에서
실행하고 있었던 thread들은 어떻게 되는건가요??
등등 문제가 많긴 합니당.. 휴~
fork & exec 하는게 정답인 듯
fork 하고 자식 process 죽이는 것은 달리 찾아보시고요.
popen은 역시 동기화된 동작에나 어울리는 것 같아요.
댓글 달기