2

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

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

但是标准(AFAIK)是在进程成功退出时使用返回码0,并且在出现错误时使用任何其他值,这种方法是否会产生任何问题?


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

4

4 回答 4

2

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

  • 插座
  • 共享内存
  • 管道
  • 独占文件描述符(在某种程度上,如果可以的话,宁愿去其他的东西)
  • ...

返回约定更改不是普通程序员应该敢于违反的。

于 2013-07-04T10:36:41.193 回答
1

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

于 2013-07-04T10:36:40.410 回答
0

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

我不会更改退货约定...

于 2013-07-04T10:32:13.483 回答
0

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

我会坚持约定,即返回 0 表示成功,特别是如果您的程序对其他人可见/可用,或者无论如何都可以很好地记录这些决定。

无论如何,除了约定之外,还有标准

于 2013-07-04T10:32:55.767 回答