是否可以为成功执行的进程使用非零返回码?

时间:2013-07-04 10:24:33

标签: linux process

我正在实施一个简单的作业调度程序,它为每个要运行的作业跨越一个新进程。当作业退出时,我希望它能够向调度程序报告执行的操作数。

我能找到的最简单的方法是以操作数作为返回码退出。例如,该过程将以“3个已执行的操作”返回代码3退出。

但标准(AFAIK)在进程成功退出时使用返回代码0,以及出现错误时的任何其他值,这会产生任何问题吗?


注意:子进程不是可执行脚本,而是父进程的分支,因此无法从外部访问。

4 个答案:

答案 0 :(得分:2)

您正在寻找的是进程间通信 - 并且有很多方法可以做到:

  • 套接字
  • 共享内存
  • 独家文件描述符(在某种程度上,如果可以的话,请去寻找别的东西)
  • ...

返回约定更改不是常规程序员应该违反的。

答案 1 :(得分:1)

唯一的风险是混淆调用脚本。你所描述的是有意义的,因为你真正想要的是计数。正如Joe所说,对失败使用负值,你应该考虑包括一个--help选项来解释返回值......所以当你下个月尝试使用它时你可以弄清楚这段代码在做什么。

答案 2 :(得分:0)

我会使用日志:记录执行给调度程序的操作数。这样您还可以记录日期时间和其他额外信息。

我不会改变返回约定......

答案 3 :(得分:0)

如果调度程序跨越一个子项并且您正在编写,那么您也可以为每个子项打开一个管道,或者命名管道或unix域套接字,并将其用于进程间通信并在那里写入已处理的作业。

我会坚持使用惯例,即返回0表示成功,特别是如果你的程序是由其他人可见/可用,或者反正记录这些决定。

除了惯例之外,还有standards