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

这个问题是
this question的后续问题.

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

bash: no job control in this shell

我认为是因为在fork序列中调用了函数setsid(),我不知道在使用posix_spawn()时如何模拟这个操作.

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

最佳答案 你不能.它不是当前posix_spawn接口的一部分.


http://austingroupbugs.net/view.php?id=1044讨论了添加它

并且显然至少有一个实现(QNX)提供POSIX_SPAWN_SETSID作为扩展,但为了保持标准兼容,您需要使用fork.

如果父进程很小,使用fork不应该是一个问题,所以我想,为了充分利用这两个世界,你可以使用posix_spawn来启动一个小的帮助器二进制文件,它分叉并调用setsid.
IMO,使用setsid应该是非常罕见的,因为双重执行的小额外成本可以忽略不计.

点赞