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应该是非常罕见的,因为双重执行的小额外成本可以忽略不计.
标签:posix,linux,setsid 来源: https://codeday.me/bug/20190702/1353236.html