我正在寻找在Linux系统上使用的C代码来异步启动另一个进程。第二个进程应继续进行,即使第一个进程结束。我已经查看过“叉”、"system“和"exec”选项,但是没有看到任何会产生与原始进程不通信的对等进程或子进程的东西。
这能办到吗?
发布于 2014-03-20 18:46:55
在Linux (和Unix)中,每个进程都是由现有进程创建的。您可以使用fork创建一个进程,然后终止父进程。这样,孩子就成了孤儿,但还是被init收养了。如果您想要创建一个不被他人继承的进程,恐怕这是不可能的。
发布于 2014-03-20 18:47:22
你当然可以。在父fork()中,一个孩子,在那个孩子中,首先调用daemon() (这是避免setsid等的一种简单方法),然后从exec家族调用一些东西。
发布于 2014-03-20 18:47:02
你用叉子(man 2叉子),然后是execl (man 2 execl)
创建一个与调用进程相同的新进程(因此是一个完美的孪生进程),其中execl用一个新的映像替换其中的一个。
如果你在google上搜索“叉execl”,你会发现很多教科书的例子--包括how to use correctly fork() and exec()。
最常见的叉子-- execl --仍然有与终端相关联的新进程--为了创建一个完美的后台进程,您需要创建一个所谓的守护进程--这个模板可以在下面的答案中使用-- Creating a daemon in Linux。
https://stackoverflow.com/questions/22542301
复制相似问题