相关疑难解决方法(0)

进程终止时的默认退出代码?

当一个进程被一个可处理的信号杀死时,例如SIGINTorSIGTERM但它不处理该信号,该进程的退出代码是什么?

对于无法处理的信号,例如SIGKILL?

据我所知,杀死进程SIGINT可能会导致退出代码130,但这会因内核或外壳实现而异吗?

$ cat myScript
#!/bin/bash
sleep 5
$ ./myScript
<ctrl-c here>
$ echo $?
130
Run Code Online (Sandbox Code Playgroud)

我不确定如何测试其他信号...

$ ./myScript &
$ killall myScript
$ echo $?
0  # duh, that's the exit code of killall
$ killall -9 myScript
$ echo $?
0  # same problem
Run Code Online (Sandbox Code Playgroud)

kill signals exit exit-status

73
推荐指数
3
解决办法
8万
查看次数

如何在 bash 中抑制 SIGPIPE?

我正在尝试执行以下代码:

set -euxo pipefail
yes phrase | make installer
Run Code Online (Sandbox Code Playgroud)

在哪里Makefile使用phrasefrom stdin 创建安装程序文件。但是,此命令以错误代码 141 结尾,这会破坏我的 CI 构建。这个例子可以简化为:

yes | tee >(echo yo)
Run Code Online (Sandbox Code Playgroud)

从这里看到的内容:管道故障 (141) 当管道输出到三通时——为什么?- 这个错误意味着管道消费者刚刚停止消费输出 - 这在我的情况下非常好。

有没有办法抑制管道错误,然后从make installer?

bash pipe

5
推荐指数
1
解决办法
870
查看次数

标签 统计

bash ×1

exit ×1

exit-status ×1

kill ×1

pipe ×1

signals ×1