fork 후 child process 문제점 ?
글쓴이: idrukawa / 작성시간: 화, 2012/08/28 - 11:07오전
안녕하세요.
fork() 후 execv() 를 호출하는 프로그램이 있습니다.
운용체제는 solaris 10입니다.
몇 년동안 이상없다가 (문제 상황을 발견하지 못했을 수도 있지만...) 딱 한 번 발견된 증상인데요.
소스 상으로 fork() 후 child 에서 execv() 로 다른 process를 기동 하도록 되어 있는데
실제 동작에서 child가 동작을 멈춘상태로 계속 떠있습니다.
덕분에 2개의 동일한 프로세스가 기동되어 있는 모양이 되어 버렸네요 ㅠ
이렇게 판단한 근거는 fork() 후 parent에서의 로그는 출력되고, child 에서의 로그는 출력되지 않았기 때문입니다.
소스 중 문제되는 부분을 발췌합니다. 도움이 될만한 의견은 아무거라도 좋으니 남겨주세요.
//------------------------------------
// Fork Child Process (=Sub process)
//------------------------------------
if ( (childProcID = fork()) == 0 )
{
char pExcuteFileName[128] = "";
if ( getenv("NIMS_BIN_PATH") != (char *)NULL )
{
sprintf( pExcuteFileName, "%s/%s",
getenv("BIN_PATH"), FILE_NAME );
}
else
{
PrintLog(LL_ERR);
return FALSE;
}
PrintLog(LL_DBG);
...
// Child Process를 기동시킨다.
executeRlt = execv( (char *) pExcuteFileName, pArgv );
...
}
//------------------------------------
// Fork Child Process Fail
//------------------------------------
else if ( childProcID < 0 )
{
PrintLog(LL_ERR);
return FALSE;
}
//------------------------------------
// Parent(ProcMgr) Process
//------------------------------------
else
{
PrintLog(LL_INF);
...
}Forums:


댓글 달기