这个问题是这个问题的后续。
当posix_spawn()
发出bash命令时,我得到消息:
bash:在这个shell中没有作业控制
我认为是因为在fork序列中有对函数setsid()
的调用,我不知道如何在使用posix_spawn()
时模拟此操作。
是否有一种方法为bash进程创建新的会话?
你不能。它不是当前posix_spawn
接口的一部分。添加它已在http://austingroupbugs.net/view.php?id=1044上进行了讨论显然,至少有一个实现(QNX)提供了POSIX_SPAWN_SETSID
作为扩展,但为了保持标准兼容,您需要使用fork
。
fork
不应该是一个问题,所以我想,为了获得两全其美,您可以使用posix_spawn
来启动一个小的辅助二进制文件,forks
并调用setsid
。在我看来,使用setsid
应该很少,因为双执行的小额外成本可以忽略不计。