在使用异步库在一个终端中同时执行2个作业期间,最好区分哪个消息来自哪个作业。
有没有办法在执行第三方应用程序期间在Sys.command的每行输出的开头附加手动字符串?
例如:
job1:message1
job1:message2
job2:message1
我已经看到用Unix.open_process_in重定向输出的例子,但是,它会与Async一起工作吗?
答案 0 :(得分:3)
我不确定您的设置的哪个部分是第三方。如果您可以控制命令行,并且在某种类Unix系统上运行,那么只需通过sed发送输出即可得到您想要的粗略近似值:
job1-command 2>&1 | sed -u 's/^/Job 1: /'
从unix命令行看起来像这样:
$ date 2>&1 | sed -u 's/^/Job 1: /'
Job 1: Thu Jul 7 18:54:04 PDT 2016
$ date erroneous 2>&1 | sed -u 's/^/Job 1: /'
Job 1: date: illegal time format
-u
标志使输出响应更快(它关闭缓冲)。在某些系统(如OS X)上,-l
标志代替了这一点。
如果您想将标准输出与标准错误分开,事情会变得更加复杂。
这可能对你想要的东西太粗糙了,但我希望它有用。