popen()에 의해서 실행되고 있는 프로세스를 강제로 종료시키는 방법은 없을까요?

leo83820의 이미지

	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;
	}

이러한 방법으로 외부 프로그램을 실행시켜서 사용하고 있었습니다.

그런데 실행시킨 프로그램이 오작동을하거나 할때 시간이 많이 소모되는 때가 있어서

일정시간동안 응답이 없으면 그 프로세스를 강제로 종료시켜야 할 일이 생겼는데요

여기저기 찾아보아도 어떻게 해야할지 모르겠습니다.

안되는건가요?? ㅠ.ㅠ

winner의 이미지

오랜만이라 기억이 잘 안 나네요.

leo83820의 이미지

wait하고 있는 중에 문제가 생기면
그냥 kill시키고 싶은데요..

역시 그냥 pipe, fork, execl 요렇게 사용하는 해서 할 수 있는 방법 밖에 없을까요??

아.. 그런데 fork하고 execl을 사용했을때 부모 프로세스 에서
실행하고 있었던 thread들은 어떻게 되는건가요??
등등 문제가 많긴 합니당.. 휴~

winner의 이미지

fork 하고 자식 process 죽이는 것은 달리 찾아보시고요.
popen은 역시 동기화된 동작에나 어울리는 것 같아요.