Cur*_*ind 5 linux terminal bash shell stderr
我正在调试一个必须与其他组件一起运行的应用程序。我将所有内容都包装在一个脚本中:
#!/bin/bash
./component1 > 1.log &
./my_application &
./component2 > 2.log &
Run Code Online (Sandbox Code Playgroud)
我想在终端中看到输出,所以我没有重定向my_application.
原来my_application有段错误。但奇怪的是,抱怨分段错误信息的输出行没有在我的终端中打印出来。最后一行根本就不见了。
如果我./my_appliation单独在另一个终端中运行,则输出工作正常。我看到了“Segmentation fault”的最后一行
当我使用 & 运行我的应用程序时,为什么我的输出丢失?如果我在命令末尾添加 & 有什么区别?
消息“Segmentation failure”并不是真正从 shell 写入的,./my_applitation而是从 shell 写入的。
&当您在命令之后使用时,外壳程序将在子外壳程序的后台运行它,我认为该子外壳程序的 stderr 输出就是丢失的内容。
我在这里确认同样的事情:
$ cat >segf.c <<EOF
int main(int argc, char *argv[]){
char *p;
p=0;
printf("%d", *p);
}
EOF
$ make segf
$ bash -c "./segf"
Segmentation fault
$ bash -c "./segf &"
$
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1564 次 |
| 最近记录: |