我正在寻找在基于Linux的系统上使用的C代码,以异步方式启动另一个进程。第二个过程应该继续,即使第一个过程结束。我查看了“fork”,“system”和“exec”选项,但没有看到任何会产生与原始进程无法通信的对等进程或者原始进程的子进程。
可以这样做吗?
答案 0 :(得分:2)
当然可以。在父母fork()
中,孩子会在该孩子中首先拨打daemon()
(这是一种避免setsid
等的简单方法),然后从exec
家中拨打电话
答案 1 :(得分:0)
在Linux(和Unix)中,每个进程都是由现有进程创建的。您可以使用fork
创建进程,然后终止父进程。这样,孩子将成为孤儿,但仍然会被init
采用。如果你想创建一个不被他人继承的流程,我担心这可能是不可能的。
答案 2 :(得分:0)
你做一个fork(man 2 fork),然后是execl(man 2 execl)
用于创建与调用过程相同图像的新过程(所以是完美的双胞胎),其中execl用新图像替换其中一个双胞胎。
如果您搜索谷歌搜索" fork execl"你会发现很多教科书的例子 - 包括how to use correctly fork() and exec()
最常见的fork-execl你仍然会有一个与终端关联的新进程 - 创建一个完美的后台进程,你需要创建一个所谓的守护进程 - 这个模板可以在这个答案中结束这里Creating a daemon in Linux