c++ - 如何保持进程运行?

标签 c++ coding-style process

我有一个启动多个线程的进程,这些线程执行某些操作、监听某些端口等。

启动所有线程后,主线程当前进入死循环:

是这样的:

int main()
{
   //start threads
   while (true)
   {
      sleep(1000);
   }
}

额外的 sleep 确保主线程不会吃掉处理器。

这个方法可以吗?是否有关于流程如何保持活跃的行业标准?谢谢。

编辑:一些说明:

  • 线程是监听器,因此 joinWaitForSingleObject 不是一个选项。通常我可以在这里使用 join,但线程是由第三方客户端库启动的,我无法控制它们。
  • 从设计的角度来看,在主线程中进行一些处理是没有意义的。

最佳答案

.部分摘自 Linux Daemon Writing HOWTO ,我假设你想要这样的东西:

int main() {
    pid_t pid;

    /* Fork off the parent process */       
    pid = fork();
    if (pid < 0) {
            exit(EXIT_FAILURE);
    }
    /* If we got a good PID, then
       we can exit the parent process. */
    if (pid > 0) {
            exit(EXIT_SUCCESS);
    }
    // now start threads & do the work

    for( thread *t : threads ) {
            join( t );
    }

    return 0;
}

这样主进程将退出,子进程将生成线程来完成工作。最后,子进程将在退出之前等待这些线程完成。

关于c++ - 如何保持进程运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10394986/

相关文章:

python - 使用多个模块进行 Python 日志记录的常见/标准做法是什么?

bash - 如何等待脚本生成的所有子(和孙子等)进程

c# - 如何根据进程 ID 而不是进程名称获取 CPU 使用率

c++ - 如何使用 Emabarcadero C++ 编译 C 源代码?

c++ - 通过提供 rowIndices 列表从矩阵中获取行

c++ - 如何在类里面重用和重新初始化 c++ discrete_distribution?

C++ 模板返回带有类型名值的元组

python - 更多Python主义 : prefix subdirectory with parent folder name?

c# - 使用空合并运算符的独特方式

c - 如何访问分配给不同进程的内存?