単一のsystem()呼び出しを使用してCで複数のコマンドを実行する
質問
現在取り組んでいる情報セキュリティラボでは、" system()"の1回の呼び出しで複数のコマンドを実行するという仕事をしています。 (Cで作成され、Fedoraで実行されます)。 system()を介してコマンド以上のものを実行できる構文は何ですか? (プログラムがsystem()呼び出しを介してOSと対話する場合、リモートコンピューターで実行されているプログラムを介して任意のコマンドを実行できるという考えです。)
つまり:
char command[] = "????? \r\n";
system(command);
解決
コマンドを実行するために呼び出されるシェルに依存しますが、一般的にほとんどのシェルは;
を使用してコマンドを分離するため、次のように動作します。
command1; command2; command3
[編集]
@dicroceが述べたように、;
の代わりに&&
を使用すると、ゼロ以外の値を返す最初のコマンドで実行を停止できます。これは望ましい場合と望ましくない場合があります(成功すると一部のコマンドはゼロ以外を返す場合があります)が、失敗する可能性のあるコマンドを処理しようとしている場合は、複数のコマンドをsystem()呼び出しで一緒にストリング化しないでください障害が発生した場所を特定する方法。この場合、最善の策は、一度に1つのコマンドを実行するか、適切なエラー処理を実行して代わりに呼び出すシェルスクリプトを作成することです。
他のヒント
&&を使用コマンド間。成功したエラーコードを返す限り、コマンドの実行のみを続けるという利点があります。例:
" cd / proc&& cat cpuinfo"
1つの可能性がすぐに思い浮かびます。すべてのコマンドをスクリプトに書き込んでから実行できます:
system ("cmd.exe /c \"x.cmd\"");
または、Fedoraで実行していることに気付いたので:
system ("x.sh");