使用单个系统()调用在C中执行多个命令
题
在我正在进行的信息安全实验室中,我的任务是通过一次调用“system()”来执行多个命令。 (用C语言编写,在Fedora上运行)。什么语法允许我执行多个命令通过system()? (如果程序通过system()调用与操作系统交互,那么你可以通过在远程计算机上运行的程序执行任意命令。)
即:
char command[] = "????? \r\n";
system(command);
解决方案
这取决于被调用以执行命令的shell,但通常大多数shell使用;
来分隔命令,所以这样的东西应该工作:
command1; command2; command3
[编辑]
正如@dicroce所提到的,您可以使用&&
代替;
,它将在第一个返回非零值的命令处停止执行。这可能是也可能不需要(并且某些命令在成功时可能返回非零)但是如果您尝试处理可能失败的命令,则可能不应该在system()调用中将多个命令串在一起,因为您没有以何种方式确定发生故障的位置。在这种情况下,您最好的选择是一次执行一个命令,或者创建一个执行相应错误处理的shell脚本,然后调用它。
其他提示
使用&&你的命令之间。它的优点是只要它们返回成功的错误代码,它就会继续执行命令。例如:
" cd / proc&& cat cpuinfo"
立即想到一种可能性。您可以将所有命令写入脚本,然后使用以下命令运行:
system ("cmd.exe /c \"x.cmd\"");
或者,现在我注意到你在Fedora上运行了:
system ("x.sh");
不隶属于 StackOverflow