我正在尝试让子进程(通过fork()
)前台访问终端。
在 I 之后fork()
,我在子进程中运行以下代码:
setpgid(0, 0);
和:
setpgid(child, child);
在父进程中。
这为子进程提供了自己的进程组。调用setpgid()
正常工作。
现在我想让孩子访问终端。
通话后,我向孩子添加了以下内容setpgid()
:
if (!tcsetpgrp(STDIN_FILENO, getpid())) {
perror("tcsetpgrp failed");
}
之后,有一个execv()
命令 spawn /usr/bin/nano
。
然而,没有nano
出现,什么也没发生,终端看起来好像在等待用户输入。
此外,调用后似乎没有执行任何代码tcsetpgrp()
。
我在某处读到我需要向SIGCONT
子进程发送信号以使其工作。如果该过程停止,我该怎么做?父母必须发送信号吗?
SIGCONT
如果这是解决方案,我该如何发送信号?
raise(SIGCONT);
另外,我不确定这是否有帮助,但是nano
如果我运行我的程序,代码可以正常工作并产生:
exec ./program
代替:
./program
有任何想法吗?非常感谢!