|
|
1
21
然后从
|
|
|
2
39
我所知道的最好的解决方案是使用管道来传达
|
|
3
8
你下班后做什么
问题的一个来源可能是您指定了一个简单的程序名而不是路径名;也许您可以用
在可能的范围内,确保进程报告问题以便可以跟踪它是很重要的—将其消息写入日志文件或仅写入stderr(甚至可能是)
|
|
|
4
3
|
|
|
5
1
(Shell除外,即如果用户输入了伪命令) 如果exec失败,则表明:
对于任何严重的错误,通常的方法是在stderr上写错误消息,然后用失败代码退出。几乎所有的标准工具都能做到这一点。对于执行官:
壳也会这样做(或多或少)。
不要浪费太多时间去预测所有可能的错误情况。不要编写试图以最佳方式处理每个错误代码的代码。你只会膨胀代码,并引入许多新的错误。如果你的程序被破坏了,或者被滥用了,它就应该失败。如果你强迫它继续下去,更糟的麻烦会随之而来。 例如,如果系统内存不足,并且正在进行彻底的交换,我们不想一遍又一遍地尝试运行进程;这只会使情况变得更糟。如果我们得到一个文件系统错误,我们不想继续在这个文件系统上运行;这可能会使损坏更严重。如果程序安装错误,或者有bug,或者内存损坏,我们希望在损坏的程序造成实际损坏(例如向客户端发送损坏的报告,破坏数据库,…)之前尽快停止。
如果您正在制作一个交互式GUI程序,请尝试将其作为可重用命令行工具(如果出现问题,将退出)上的瘦包装器。程序中的每个函数都应该可以通过GUI、命令行和函数调用进行访问。写下你的函数。编写一些工具来为任何函数制作命令行和GUI包装器。也使用子进程。 如果你在做一个真正关键的系统,比如核电站的控制器,或者海啸预报程序,那么你在读我愚蠢的建议做什么?关键系统不应完全依赖计算机或软件。需要有一个“手动超控”,有人来驱动它。特别是,不要试图在微软Windows上构建一个关键系统,就像在水下建造沙堡一样。 |
|
|
sk123 · Shell脚本-如何在循环中显示变量名及其值 2 年前 |
|
|
sai · unix中使用python进行数据重组 2 年前 |
|
|
FangQ · 如何使用jq打印由制表符“\t”分隔的JSON数组元素 2 年前 |
|
|
ROHAN · 我想显示包含一个括号的行,包括它的开头或结尾 2 年前 |
|
Geomicro · 删除模式sed之间的逗号 2 年前 |