Questions tagged «process-groups»

5
运行多个命令并将其作为bash中的一个杀死
我想在单个shell上运行多个命令(进程)。它们都有自己的连续输出并且不会停止。在后台运行它们会中断Ctrl- C。我想将它们作为单个进程(可能是subshel​​l)运行,以便能够使用Ctrl- 停止所有进程C。 具体来说,我想使用mocha(监视模式)运行单元测试,运行服务器并运行一些文件预处理(监视模式),并在一个终端窗口中查看每个单元的输出。基本上,我想避免使用某些任务运行程序。 我可以通过在后台(&)中运行进程来实现这一点,但随后必须将其置于前台以停止它们。我希望有一个包装它们的过程,当我停止该过程时,它将停止其“子代”。

1
杀死0实际上会做什么?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Unix&Linux Stack Exchange 的主题。 2年前关闭。 在中man page,它说: kill [ -s signal | -p ] [ -a ] [ -- ] pid ... pid... Specify the list of processes that kill should signal. Each pid can be one of five things: 0 All processes in the current process group …

1
是否可以从/ proc获取进程组ID?
在“ /programming/13038143/how-to-get-pids-in-one-process-group-in-linux-os ”中,我看到了所有提及的答案,ps而没有提及/proc。 “ ps”似乎不是很可移植(Android和Busybox版本期望使用不同的参数),我希望能够使用简单且可移植的工具列出带有pgid的pid。 在/proc/.../status中,我看到了Tgid:(线程组ID),Gid:(用于安全性而不是用于将进程分组在一起的组ID),但是没有PGid:... 还有什么(不使用ps)从pid获取pgid的方法?

1
为什么我的子进程的PGID不是父进程的PID?
因此,我到处都读到该命令应终止父进程的所有子进程: kill -- -$$ 在kill命令中使用负ID引用了一个PGID,从示例中我已经看到,子进程的PGID似乎应该是父进程的PID,但在我的系统上不是这样。 在我的系统上,子代的PGID与父脚本的PGID相同,后者实际上是bash。 这里发生了什么?示例是错误的还是我的系统设置不同? 我需要实现的是在不终止父进程的情况下终止子进程,因此我不想向父进程所在的PGID发送终止信号。

1
交互式外壳在孤立的流程组中应该做什么?
(根据/programming/13718394/what-should-interactive-shells-do-in-orphaned-process-groups中的建议在UNIX中重新发布) 简短的问题是,如果外壳程序位于不拥有tty的孤立进程组中,它应该怎么办?但我建议阅读冗长的问题,因为这很有趣。 这是一种有趣且令人兴奋的方法,可以使用您喜欢的外壳将笔记本电脑变成便携式太空加热器(除非您是那些tcsh怪人之一): #include <unistd.h> int main(void) { if (fork() == 0) { execl("/bin/bash", "/bin/bash", NULL); } return 0; } 这导致bash将CPU固定在100%。zsh和fish的作用相同,而ksh和tcsh则对工作控制含糊其辞,然后再进行龙骨化处理,这虽然好一些,但效果不明显。哦,这是与平台无关的违规者:OS X和Linux都受影响。 我的解释(可能是错误的)如下:子外壳检测到它不在前台:tcgetpgrp(0) != getpgrp()。因此,它试图停止自身:killpg(getpgrp(), SIGTTIN)。但是它的进程组是孤立的,因为它的父级(C程序)是领导者并死亡,并且SIGTTIN发送给孤立进程组的操作只是被丢弃(否则什么也无法再次启动它)。因此,子外壳并没有停止,但是它仍然在后台,因此马上就可以再次执行所有操作。冲洗并重复。 我的问题是,命令行外壳程序如何检测到这种情况?正确的做法是什么?我有两个解决方案,都不是理想的: 尝试通知其pid与我们的组ID匹配的进程。如果使用失败ESRCH,则表明我们很可能成为孤儿。 尝试从中无阻塞读取一个字节/dev/tty。如果使用失败EIO,则表明我们很可能成为孤儿。 (我们跟踪此问题的是https://github.com/fish-shell/fish-shell/issues/422) 感谢您的想法!
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.