- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个命令 foo 和 bar。
foo 在没有 stdin 或 stdout/stderr 事件的情况下运行了很长时间。 bar 是 foo 的客户端,使用 stdout/stderr 运行,但没有 stdin 事件。
我想从一个 shell 运行它们,能够用 ctrl-c 杀死它们,并在发生时查看 bar 的输出。
即像这样的序列
富&酒吧 kill -9
但无需手动执行 kill - 相反它只是发生在 ctrl-c 上
有没有办法编写脚本?
谢谢
最佳答案
不要使用kill -9
。
您想在 EXIT
上捕获,而不是在 INT
上捕获。
trap 'kill $fooPid $barPid' EXIT
foo & fooPid=$!
bar & barPid=$!
wait
此解决方案将始终确保终止 foo
和 bar
,无论它退出的原因是什么(不包括它被 SIGKILL
编辑) .
如果你想避免保留 PID(它有一些竞争条件问题),你可以这样做:
trap 'kill $(jobs -p)' EXIT
foo &
bar &
wait
如果您的脚本没有其他作业,那是更好(也更干净!)的解决方案。
注意:这些解决方案意味着 foo
和 bar
可以写入您的终端(您脚本的 stdout
),但都不能从 stdin
读取>。如果您需要 foo
或 bar
从 stdin 读取,解决方案会变得有点复杂。
关于bash - 如何在 bash 中运行两个进程,就好像它们是一个进程一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/709793/
在引用此文档pressable docs之后,我将Pressable用于按钮 现在,我想向按钮添加波纹效果,但是它无法正常工作。 Button 如果按钮具有
在 C# 中,我想制作“智能”枚举,这在 Java 中是可能的,其中有更多信息附加到枚举值,而不仅仅是底层 int。我偶然发现了一个创建类(而不是枚举)的方案,如以下简单示例所示: public se
当执行 git stash 时,会创建 2 个提交。一个被 stash ref 引用并且有 2 个父提交。一位 parent 是我们 stash 地点的索引。另一方拥有我们 stash 的实际内容。
我是一名优秀的程序员,十分优秀!