Tag: 作业

如何让tcsetpgrp()在C中工作?

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