シェルコマンドを実行し、次を使用して出力をファイルにリダイレクトする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");