Запуск демона UDHCPC с помощью Posix_Spawn в BusyBox.

Я использую функцию posix_spawn для запуска потока из исполняемого файла «/ sbin / udhcpc», например так:

char* argv[] = {(char*)UDHCPC_EXECUTABLE_FILE, (char*)"-s", (char*)UDHCPC_NOTIFIER,
(char*)"-i", (char*)INTERFACE_NAME,
(char*)"-p", (char*)UDHCPC_PID,
NULL};
char* envp[] = {NULL};
int status;

// Start UDHCPC daemon (lock DaemonProcess against concurrent modifications)
{
CMutex lock(&self->m_ConnectionStatusLock);

status = posix_spawn(&self->m_DaemonProcess, UDHCPC_EXECUTABLE_FILE, NULL, NULL, argv, envp);

if (status != 0)
{
cout<<"UDHCPC daemon start failed (%s)"<<endl;

}

}

Моя проблема заключается в следующем:

Когда я использую командную строку «PS», чтобы увидеть PID моего нового процесса, я вижу, что первое порождение posix создает поток udhcpc (поток зомби, который исчез очень быстро), и после этого постоянный процесс с конфигурацией переменной «argv».

Итак, проблема в том, что в переменной Process Deamon ID «m_DaemonProcess» я получаю PID процесса зомби.
это нормально?
Как я могу получить непосредственно PID постоянного процесса?

пожалуйста помоги
Спасибо

0

Решение

udhcpc клиент должен принять -f или же --foreground опция, которая заставляет его не выполнять свой собственный fork-exec, поэтому вы получаете временный pid.

Вы также используете опцию pidfile, чтобы вы могли читать и этот контент.

0

Другие решения