【问题标题】:Starting the UDHCPC Daemon with Posix_Spawn in BusyBox.在 BusyBox 中使用 Posix_Spawn 启动 UDHCPC 守护进程。
【发布时间】:2014-05-14 07:16:12
【问题描述】:

我正在使用函数 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 spawn 创建了一个 udhcpc 线程(一个很快消失的僵尸线程),然后是一个永久进程使用变量“argv”的配置。

所以,问题是在变量进程守护进程ID“m_DaemonProcess”中,我得到了僵尸进程的PID。 那是正常的吗? 如何直接获取永久进程的PID?

请帮忙 谢谢

【问题讨论】:

    标签: c++ c linux busybox


    【解决方案1】:

    udhcpc 客户端应该接受 -f--foreground 选项,这会导致它无法执行自己的 fork-exec,这就是您获得临时 pid 的原因。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-21
      • 2018-08-16
      • 2012-01-13
      相关资源
      最近更新 更多