パイプを使用してシステム コールの出力をキャプチャしています。私が実行しているコマンドは次のとおりです:-
ps -ef | grep "/home/code/service" | grep 14011 | awk '{print $NF}'
コマンドプロンプトで上記のコマンドを実行すると、197などの整数値が1つ表示されます。
pipe を使用して同じコマンドを実行すると、次のようになります:-
$NF}'
$NF}'
197
上記の出力順序はランダムな順序であるため、次のようになる可能性があります:-
$NF}'
197
$NF}'
以下のリンクに記載されている同様のコード(waqasによる)を使用しています:-
コマンドを実行し、POSIX を使用して C++ 内でコマンドの出力を取得する方法は?
次の方法を使用してパイプにコマンドを渡しています:-
std::stringstream sstr ;
sstr<<"ps -ef | ";
sstr<<"grep \"/home/code/service/\" | grep ";
sstr<<ppid;
sstr<<" | awk \'{print $NF}\'";
FILE* pipe = popen((sstr.str()).c_str(), "r");