8

私が取り組んでいる情報セキュリティラボでは、「system()」(Cで記述され、Fedoraで実行されている)を1回呼び出すだけで複数のコマンドを実行するという任務を負っています。system()を介してコマンド以上の実行を可能にする構文は何ですか?(プログラムがsystem()呼び出しを介してOSと対話する場合、リモートコンピューターで実行されているプログラムを介して任意のコマンドを実行できるという考えです。)

すなわち:

char command[] = "????? \r\n"; 
system(command);
4

3 に答える 3

15

これは、コマンドを実行するために呼び出されるシェルに依存しますが、一般に、ほとんどのシェルは;コマンドを分離するために使用されるため、次のようなものが機能するはずです。

command1; command2; command3

[編集]

@dicroce が述べたように、&&代わりに;which を使用して、ゼロ以外の値を返す最初のコマンドで実行を停止できます。これは望ましい場合とそうでない場合があります (また、一部のコマンドは成功時にゼロ以外を返す場合があります) が、失敗する可能性のあるコマンドを処理しようとしている場合は、おそらく system() 呼び出しで複数のコマンドを一緒にストリングするべきではありません。障害が発生した場所を特定する方法。この場合、最善の策は、一度に 1 つのコマンドを実行するか、適切なエラー処理を実行するシェル スクリプトを作成して代わりにそれを呼び出すことです。

于 2008-10-29T02:27:30.277 に答える
8

コマンド間で && を使用します。コマンドが成功したエラー コードを返す限り、コマンドの実行を継続するという利点があります。例:

"cd /proc && cat cpuinfo"

于 2008-10-29T02:47:13.217 に答える
1

1つの可能性がすぐに思い浮かびます。すべてのコマンドをスクリプトに書き込んで、次のように実行できます。

system ("cmd.exe /c \"x.cmd\"");

または、あなたが Fedora で実行していることに気付きました:

system ("x.sh");
于 2008-10-29T02:28:01.337 に答える