【问题标题】:Why does sudo not work when spawned inside a process group?为什么 sudo 在进程组中生成时不起作用?
【发布时间】:2023-10-30 15:24:01
【问题描述】:

使用 Ruby 作为宿主语言,为什么会这样:

pid = Process.spawn("sudo", "ls", "-lah")
Process.wait2 pid

但是这没有输出就挂了?

pid = Process.spawn("sudo", "ls", "-lah", pgroup: true)
Process.wait2 pid

【问题讨论】:

    标签: linux unix process sudo spawn


    【解决方案1】:

    原来一个终端只能有一个前台进程组,可以读取输入和写入输出,以及处理信号。为了使上述工作,您需要将其设置为前台进程组:

    pid = Process.spawn("sudo", "ls", "-lah", pgroup: true)
    Termios.setpgrp($stdin, pid)
    Process.wait2 pid
    

    【讨论】: