0

我有一个应用程序,其中父进程通过分布式场系统(如 lsf/vnc )启动作业。现在我想要的是,只要任何作业启动在其各自的日志中报告任何错误,错误应该被重定向到父进程的主标准输出屏幕。这样就不需要单独监控每个作业的日志。我从未在我的代码中使用过管道/信号量,但如果需要我可以学习。

请提出一些有效的解决方案。我在 Linux/Solaris 平台上工作。

谢谢

4

3 回答 3

0

根据您启动子流程的方式,有不同的机制如何设置它们的标准句柄。

通常,您必须将其 stderr 句柄设置为与您的 stdout 句柄相同。

请记住,这与您提到的“日志”无关;这是关于你的主题所说的(重定向stderr)。

于 2012-07-05T09:23:53.510 回答
0

您可能应该使用 dup2() 库调用,以便将子进程中的 STDERR 复制到所需的文件描述符,例如复制到任何其他描述符的 STDOUT,它可以在父进程之前打开并在 fork( )。尝试阅读“dup2”调用的 manula 页面。

于 2012-07-05T20:17:37.893 回答
0

如果您希望子项的标准错误与父项的标准输出相同,那么您可以简单地启动父项,并将其标准错误绑定到其标准输出。如果cmd是启动父级的命令,请尝试:

$ cmd 2>&1
于 2012-07-05T16:16:40.743 回答