在BusyBox中使用Posix_Spawn启动UDHCPC守护进程
Starting the UDHCPC Daemon with Posix_Spawn in 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;
}
}
My Problem is:
当我使用命令行"PS"时,为了查看我的新进程的PID,我看到第一个posix spawn创建了一个udhcpc线程(一个很快消失的僵尸线程),之后创建了一个永久性进程,配置了变量"argv"。
所以,问题是,在变量进程守护进程ID"m_DaemonProcess",我得到僵尸进程的PID。这正常吗?我怎样才能直接得到永久进程的PID ?
请帮助由于
udhcpc
客户端应该接受-f
或--foreground
选项,这会导致它不执行自己的fork-exec,这就是为什么您得到临时pid。
您还使用了pidfile选项,因此您也可以读取该内容
相关文章:
- 如何创建一个空的全局类并在启动时实例化它
- 即使我读取了所有内容,在FIFO上打开的QSocketNotifier也会一直启动
- 使用 std::string () const 函数启动线程或未来
- 如何修复valgrind启动时的致命错误(与libc6-dbg和libc6-dbg:i386连接)
- 将向量作为类>(值)<向量启动和向量<类>[值]有什么区别
- 如何创建线程序列以按照启动顺序执行任务?
- WINAPI 注册应用程序重新启动时不清除打开的套接字
- 在挂钩启动新线程时解除挂钩进程
- 程序无法启动,因为缺少 libmpc-3.dll
- 从 exe 文件 (Visual Studio ) 启动时调试断言失败
- QSerialPort 在应用程序启动之前正在使用中
- 无法在 Arch Linux 中启动虚幻引擎 4
- C++关于指针和使用函数将它们启动到堆的行为究竟是什么?
- 如何使用 ctypes 停止和重新启动从 Python 运行的C++代码
- 程序在使用 system() 启动另一个可执行文件时停止
- Qt 和 Android - 如何使用 Qandroidjniobject 启动相机
- Q没有管理权限的 exe 无法启动维护工具
- 启动类函数作为失去引用的线程
- 如何使用C++确定应用程序是否已在窗口中启动?
- 在没有管理员权限的情况下,在 c++ 中以编程方式将程序添加到启动