2016-07-07 7 views
1

Asyncライブラリを使用して1つの端末で2つのジョブを同時に実行しているときに、どちらのジョブがどのメッセージから来るのかを区別すると良いでしょう。
サードパーティ製アプリケーションの実行中に、Sys.commandの各出力行の先頭に手動文字列を付加する方法はありますか?たとえば :
JOB1:
JOB1をMESSAGE1:メッセージ2
はJOB2:メッセージ1
私はUnix.open_process_inと出力のリダイレクトの例を見てきました、しかし、それは非同期と一緒に働くのでしょうか?Sys.commの各行に文字列を添付して出力する

答えて

3

セットアップのどの部分がサードパーティであるか分かりません。 UNIXから

job1-command 2>&1 | sed -u 's/^/Job 1: /' 

:あなたは、コマンドラインを管理している、とあなたはUnixライクなシステムのいくつかの種類に実行している場合は、あなただけのsedを介して出力を送信することによって、あなたは何をしたいの大まかな近似値を得ることができますコマンドラインは次のようになります。

$ 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フラグがこれを行います。

標準出力と標準エラーを分離したい場合は、もっと複雑になります。

これは、あなたが望むものはあまりにも粗すぎるかもしれませんが、それが役に立ちそうです。

関連する問題