Я пытаюсь запустить службу Linux из С++, и я делаю это успешно, но один из моих процессов помечен как «несуществующий», и я не хочу, чтобы мой родительский процесс умирал.
Мой код (testRip.cpp):
int main()
{
char* zebraArg[2];
zebraArg[0] = (char *)"zebra";
zebraArg[1] = (char *)"restart";
char* ripdArg[2];
ripdArg[0] = (char *)"ripd";
ripdArg[1] = (char *)"restart";
pid_t ripPid;
pid_t zebraPid;
zebraPid = fork();
if(zebraPid == 0)
{
int32_t iExecvRes = 0;
iExecvRes = execv("/etc/init.d/zebra", zebraArg);
return 0;
if(iExecvRes == -1)
{
::syslog((LOG_LOCAL0 | LOG_ERR),
"zebra process failed \n");
}
}
else
{
while(1)
{
::syslog((LOG_LOCAL0 | LOG_ERR),
"running\n");
sleep(2);
}
}
}
Выход команды ps -e:
9411 pts/1 00:00:00 testRip
9412 pts/1 00:00:00 testRip <defunct>
9433 ? 00:00:00 zebra
/etc/init.d/zebra запускает службу как демон или что-то в этом роде, поэтому я думаю, что это трюк, но:
Почему есть 3 процесса и один из них помечен как несуществующий? Что не так в моем коде? Как я могу это исправить?
Заранее спасибо.