特定の実行可能ファイルの入出力を傍受する

特定の実行可能ファイルの入出力を傍受する

いくつかの計算を実行するために、より大きなアプリケーションで呼び出される特定のLinux実行可能ファイルがあります。まず、実行可能ファイルの呼び出し方法と、パラメータとデータの転送方法を理解する必要があるため、計算の実行方法を変更したいと思います。

したがって、この実行可能ファイルが呼び出されたら、コマンドライン引数stdinとstdoutを監視したいと思います。実行可能ファイルの正常な動作を妨げてはいけません。

これを行う簡単な方法はありますか?

修正する:

次のスクリプトを使用してすべてのデータを取得するために、シェルスクリプトのプレースホルダのアイデアを試しました。

#!/bin/bash
export LOGFILE=/tmp/logname
echo `env` > $LOGFILE-env
echo "$@" >> $LOGFILE-arguments
tee -a $LOGFILE-stdin | /path/to/real/executable 2>&1 | tee -a $LOGFILE-stdout

これはテスト入力にはうまく機能しますが、実際に呼び出されると中断されます。たぶん私が思ったよりも多くのことが起こっているかもしれません。

ベストアンサー1

オプション1は、呼び出し元アプリケーションのソースコードを変更してそれをtee出力パイプラインに挿入して、そのステップで確認する出力コピーを取得することです。

オプション2は、関連する実行可能ファイルの周りにラッパースクリプトを作成することです。標準入力と引数を実際のアプリケーションに渡してから、アプリケーションがほんの数行のコードで始めることができるように、ユーザーが見て吐き出すことができる出力をどこかに送信するクイックスクリプトです。特別な場所に配置し、その場所をPATH変数の前に追加してからアプリケーションを実行します。

#!/bin/sh
cat - | /path/to/realapp $@ | tee /tmp/debug_output

おすすめ記事