我有执行使用fork()和EXECL()的应用简单的C程序。 如果EXECL()无法运行该应用程序,然后我打电话给从子进程的父进程的功能并退出。 如果EXECL()成功运行的应用程序,那我也显示从父进程取得成功日志。 所以,父进程应该等待孩子的EXECL()调用(只是调用,而不是直到应用程序的执行结束),获取有关它的状态的信息,然后再做出决定,并继续自己的执行。 这里是我的代码。
int main()
{
int iExecRetVal, pid;
pid = fork();
if (pid == -1)
{
}
else if (pid > 0)
{
}
else
{
iExecRetVal = execl("./flute-static", "./flute-static", "-send", "-a192.168.190.1/6666", "JFlute.1.2.tar.gz", NULL);
if (iExecRetVal == -1)
{
/*execl() failed, need some error handling in the parent process*/
}
_exit(0);
}
/*Parent's normal execution*/
}
int HandleSuccessFromParent()
{
/*Should be called when exec call was successful*/
}
int HandleFailureFromParent()
{
/*Should be called when exec call was NOT successful*/
}
我们知道EXECL()成功不返回。 那么,如何调用HandleSuccessFromParent()和HandleFailureFromParent()函数在孩子EXECL()调用后正常。 请帮我。