在由posix_spawn()创建的proc处调用setsid()

时间:2016-08-14 13:12:36

标签: linux posix setsid

这个问题是this question的后续行动。

posix_spawn()发出bash命令时,我收到消息:

  

bash:此shell中没有作业控制

我认为是因为在fork序列中调用函数setsid()而我不知道在使用posix_spawn()时如何模拟此操作。

有没有办法为bash流程创建新会话?

1 个答案:

答案 0 :(得分:2)

你做不到。它不是当前posix_spawn接口的一部分。 在http://austingroupbugs.net/view.php?id=1044讨论了添加它 并且显然至少有一个实现(QNX)提供POSIX_SPAWN_SETSID作为扩展,但为了保持标准兼容,您需要使用fork

如果父进程很小,使用fork不应该是一个问题,所以我想,为了充分利用这两个方面,你可以使用posix_spawn来启动一个小帮助二进制文件{ {1}}并致电forks。 使用setsid的IMO应该是非常罕见的,因为双重执行的额外成本可以忽略不计。