在BusyBox中使用Posix_Spawn启动UDHCPC守护程序。

时间:2014-05-14 07:16:12

标签: c++ c linux 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;

  }

}

我的问题是:

当我使用命令行&#34; PS&#34; ,为了看到我的新进程的PID,我看到第一个posix spawn创建了一个udhcpc线程(一个非常快速消失的僵尸线程),然后是一个永久进程,配置变量&#34; argv&# 34。

所以,问题是在变量Process Deamon ID&#34; m_DaemonProcess&#34;中,我得到了僵尸进程的PID。 这是正常的。 我怎样才能直接得到永久过程的PID?

请帮忙 谢谢

1 个答案:

答案 0 :(得分:0)

udhcpc客户端应该接受-f--foreground选项,这会导致它不执行它自己的fork-exec,这就是为什么你得到临时pid

您还使用了pidfile选项,因此您也可以阅读该内容。