|
|
1
8
tens of thousands of them like some other OS's ,即使如此,它也不总是覆盖您想要返回的特定类型的错误。 所以,只要保持一致,并确保记录您决定使用的任何方案。 |
|
|
2
6
1-127是可用范围。任何超过127的都被认为是“异常”退出——由信号终止。
|
|
|
3
4
unix宣言声明-
|
|
|
4
2
不要试图编码 也 退出值有很多意义:按照Arkadiy的建议,详细的状态和错误报告应该转到stdout/stderr。 然而,我发现在出口值中仅表示少数状态非常有用,使用二进制数字对它们进行编码。例如,假设您具有以下人为含义:
作为一种特殊情况,要查看是否存在错误,可以使用1和返回代码。 通过这样做,您可以在返回代码中以清晰、简单的方式编码两种不同的内容。我用它来做一些简单的决定,比如“是否应该重新启动进程”,“返回值和相关日志是否需要发送给管理员”,诸如此类的事情。任何详细的诊断信息都应转至日志或stdout/stderr。 |
|
|
5
1
正常退出状态从0到255(请参阅 Exit codes bigger than 255 posssible 讨论原因)。正常情况下,状态0表示成功;其他任何内容都是实现定义的错误。我确实知道有一个程序通过退出状态报告DBMS服务器的状态;这是实现定义的退出状态的特例。请注意,您需要定义程序状态的实现。
Arkadiy是正确的,在退出状态字的一部分中,除0以外的值表示终止进程的信号,第8位通常表示核心转储,但退出状态的该部分与主0..255状态不同。然而,当进程因信号而死亡时,外壳(无论是哪个外壳)会出现问题。在8位值中要显示16位数据,这总是很棘手的。Shell所做的似乎是获取信号号并向其添加128。因此,如果进程由于中断(信号号2,SIGINT)而死亡,shell将报告退出状态为130。但是,内核报告状态为0x0002;shell修改了内核报告的内容。 下面的C代码演示了这一点。有两个节目
这是
这是
丢失的代码,
|
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
|
user2138149 · 双栈网络服务器无法按预期处理ipv4请求 1 年前 |
|
|
Marco · PyCharm Linux系统文件上os.stat异常 1 年前 |