fork()에 관한..
글쓴이: 익명 사용자 / 작성시간: 화, 2002/11/05 - 11:35오전
도움좀 부탁드립니다..
fork()로 해서 부모에서도
무한 반복이 되고 아이(?)쪽에서도 무한 반복이 되고
있는 상태에서 부모가 어떤 조건에 의해서 죽으니까
아이가 죽지도 않고 계속적인 무한 반복을 하고 있어
문제가 되고 있습니다..
해서 부모쪽에 끝나는 부위에 wait()를 써 봤는데.
효과가 없더라구여..
해서 조건이 부모쪽에 있어서 ... 부모쪽이 죽기전에
자식을 강제로 죽이고 나서 자기가 죽게 만들려고 하는데
어케 해야 되져?
읽어주셔셔 감사하구여..아시는분 도움 부탁드립니다.
Forums:
Re: fork()에 관한..
포크한 이후 엄마가 자식프로세를 무작정 죽이기만 하면 된다면..
kill ( cild_pid, SIGINT );
와같이 kill을 사용하시면 될것 같습니다.
보통 유저시그널을 kill로 자식프로세스로 보내고 해당하는 시그널의
핸들(?)을 등록한 후 특정 작업을 마치고 스스로 죽게끔 만듭니다.
#include
#include
#include
#include
int mode = 0;
void catchint ( int signo )
{
mode = 1;
}
void Child ()
{
char *str;
str = (char *) malloc ( 20 );
strcpy ( str, "Child");
while ( 1 )
{
if ( mode )
{
free ( str );
exit ( 1 );
}
printf ("%s\n", str);
sleep ( 1 );
}
}
void Parent ( int child_pid )
{
int i;
for ( i = 0 ; i < 3 ; i ++ )
{
printf ("Parent %d\n", i );
sleep ( 1 );
}
kill ( child_pid, SIGUSR1 );
}
int main ()
{
int cpid;
signal ( SIGUSR1, catchint );
switch ( ( cpid = fork () ) )
{
case 0
Child ();
break;
case -1
perror ("fork fail");
break;
default
Parent ( cpid );
break;
}
return 0;
}
Re^2: fork(). 됩니다..정말 감사드립니다.(냉무)
꾸벅.
댓글 달기