在posix_spawn()创建的进程中调用setsid()



这个问题是这个问题的后续。

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应该很少,因为双执行的小额外成本可以忽略不计。

相关内容

  • 没有找到相关文章

最新更新