cat出力を標準入力にパイプする方法は? [閉鎖]

cat出力を標準入力にパイプする方法は? [閉鎖]

C++ ------> g++ -------> リリース:

#include <cstdlib>

using namespace std;

int main(){

    system("mail -s test_mail [email protected]");
    system("test msg");
    system(".");

    return 0;
 }

最初のシステムコマンドはうまく実行されますが、標準入力ではなく他の入力ストリームから入力を受け取るかのように機能します。 system("test msg") はメールプログラムを終了するために cntl+c を押した後にのみ実行され、bash は "test msg" を解釈しようとします。

ベストアンサー1

system()実際にコマンドラインを実行するだけです。パイプのようなものではありません。

サンプルプログラムを動作させるためにできるだけ小さな変更は次のとおりです。

int main()
{
    system("echo test msg | mail -s test_mail [email protected]");
    return 0;
}

これは、メッセージがmailプログラムの標準入力に渡されるためです。

より実用的なアプローチは、メッセージを一時ファイルに書き込み、そのmailファイルから標準入力をリダイレクトすることです。

おすすめ記事