C プログラムで「bash -c...」を実行すると出力をリダイレクトします。

C プログラムで「bash -c...」を実行すると出力をリダイレクトします。

シェルコマンドを実行し、次を使用して出力をファイルにリダイレクトするCプログラムがあるとします。標準図書館システム機能。

system("bash -c \"echo $HOME\" > a.txt");

これは説明のためのものであり、実際には機能しません。出力リダイレクトを機能させるには?関数はbashを呼び出すので、リダイレクトを実行するにはプロセス自体が必要です。

答え1

関数はsystemすでにシェルを呼び出しています。これは常にbashではなく、すべてのsh(Bourne / POSIX)シェルです。 Bash固有の構成を使用する必要がない限り、他のシェルを呼び出す必要はありません。単純なコマンドを実行する場合は、コマンドラインにリダイレクトを含めることができます。より複雑なコマンドを実行する場合は、コマンドシーケンス全体を中括弧で囲むことができます。

system("echo hello >somefile");
system("{ echo foo; echo bar; } >somefile");

関連情報