相关疑难解决方法(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万
查看次数

echo $ 是什么意思?做?

在我的终端中,它打印出一个看似随机的数字127。我认为它正在打印一些变量的值并检查我的怀疑,我定义了一个新变量v=4echo $?再次运行给了我0作为输出。

我很困惑,因为我期待 4 是答案。

linux command-line shell exit-status

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

您如何知道进程退出时的返回码是什么以及该值通常记录在哪里?

如果一个进程运行并退出它返回一个非零状态(我个人更喜欢术语返回代码);甚至零状态我知道该值在那里(主要是因为我已经完成了 C++ 编程并且我知道你可以在你的main()方法结束时返回一个值......但也因为如果我运行类似的东西:

fuser -s ./myfile.txt && echo "a process is accessing your file

我知道echo如果从fuser进程返回的状态值是0,则唯一打印,如果不是,echo则一起跳过,因为:

“如果没有访问任何指定文件或发生致命错误,fuser 将返回一个非零返回码。”

现在我如何显示这个返回码来知道它的价值?因为如果你正在运行fuser使用-silent,如在脚本,它似乎重要的是知道的返回码/状态值,所以我可以告诉大家,不被访问文件和实际致命错误之间的区别。

此外,手册页中是否有一个共同的地方记录了进程的返回代码/状态,以便我可以看到该值可能意味着什么?或者是否有一份文件对返回代码应该是什么有标准?

process fuser

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

标签 统计

exit-status ×2

command-line ×1

exit ×1

fuser ×1

kill ×1

linux ×1

process ×1

shell ×1

signals ×1