8

在我正在从事的信息安全实验室中,我的任务是通过一次调用“system()”(用 C 语言编写,在 Fedora 上运行)执行多个命令。什么语法可以让我通过 system() 执行更多命令?(如果程序通过 system() 调用与操作系统交互,那么您可以通过在远程计算机上运行的程序执行任意命令。)

IE:

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

3 回答 3

15

这取决于调用 shell 来执行命令,但通常大多数 shell 用于;分隔命令,所以这样的东西应该可以工作:

command1; command2; command3

[编辑]

正如@dicroce 提到的,您可以使用which&&代替;which 将在第一个返回非零值的命令处停止执行。这可能需要也可能不需要(并且某些命令可能在成功时返回非零值),但是如果您尝试处理可能失败的命令,您可能不应该在 system() 调用中将多个命令串在一起,因为您没有任何确定故障发生位置的方法。在这种情况下,您最好的选择是一次执行一个命令,或者创建一个 shell 脚本来执行适当的错误处理并调用它。

于 2008-10-29T02:27:30.277 回答
8

在命令之间使用 &&。它的优点是它只继续执行命令,只要它们返回成功的错误代码。例子:

“cd /proc && cat cpuinfo”

于 2008-10-29T02:47:13.217 回答
1

一种可能性立即浮现在脑海中。您可以将所有命令写入脚本,然后使用以下命令运行它:

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

或者,现在我注意到您正在 Fedora 上运行:

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