【问题标题】:Calling setsid() at proc created by posix_spawn()在 posix_spawn() 创建的过程中调用 setsid()
【发布时间】:2016-08-14 13:12:36
【问题描述】:

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

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

bash: 在这个 shell 中没有作业控制

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

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

【问题讨论】:

    标签: linux posix setsid


    【解决方案1】:

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

    如果父进程很小,使用fork 应该不是问题,所以我想为了两全其美,您可以使用posix_spawn 启动一个小型辅助二进制文件forks 并调用setsid。 IMO,使用setsid 应该很少见,以至于双重执行的额外成本可以忽略不计。

    【讨论】:

      猜你喜欢
      • 2019-09-03
      • 2013-05-14
      • 2016-04-24
      • 1970-01-01
      • 2019-06-29
      • 1970-01-01
      • 2019-05-07
      • 1970-01-01
      • 2017-01-23
      相关资源
      最近更新 更多