У меня есть простая программа на C, которая выполняет приложение, используя fork() и execl(). Если 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() в дочернем элементе. Пожалуйста помогите.