shell脚本发信号给父进程关闭子进程的管道输出
时间: 2023-10-12 10:13:47 浏览: 141
Python 从subprocess运行的子进程中实时获取输出的例子
可以使用trap命令来捕获信号,在信号处理函数中关闭子进程的管道输出。
示例代码:
```bash
#!/bin/bash
# 启动子进程
command | {
# 记录子进程PID,以便后面关闭管道输出
child_pid=$$
# 循环读取管道数据并处理
while read line; do
echo "处理数据:$line"
done
}
# 捕获信号并关闭子进程的管道输出
trap 'kill -PIPE $child_pid' INT TERM
# 主进程继续执行其他操作
echo "主进程开始执行其他操作..."
# 等待子进程结束
wait $child_pid
echo "子进程已结束,主进程退出。"
```
在上面的代码中,启动了一个子进程,通过管道输出数据给父进程。在主进程中捕获了INT和TERM信号,并在信号处理函数中使用kill命令向子进程发送PIPE信号,关闭其管道输出。最后通过wait命令等待子进程结束。
阅读全文