我正在从事一项关于信息安全的实验,我的任务是通过单次调用 "system()"(使用C编写,在Fedora上运行)来执行多个命令。请问如何编写语法使我能够通过 system() 执行多个命令? (这个想法是,如果程序通过 system() 调用与操作系统交互,那么你可以通过远程计算机上运行的程序执行任意命令。)
例如:
char command[] = "????? \r\n";
system(command);
我正在从事一项关于信息安全的实验,我的任务是通过单次调用 "system()"(使用C编写,在Fedora上运行)来执行多个命令。请问如何编写语法使我能够通过 system() 执行多个命令? (这个想法是,如果程序通过 system() 调用与操作系统交互,那么你可以通过远程计算机上运行的程序执行任意命令。)
例如:
char command[] = "????? \r\n";
system(command);
这取决于被调用以执行命令的shell,但通常大多数shell使用;
来分隔命令,因此像这样的东西应该可以工作:
command1; command2; command3
[编辑]
如@dicroce所提到的,您可以使用&&
代替;
,这将在第一个返回非零值的命令处停止执行。这可能是期望的(有些命令可能在成功时返回非零),但如果您正在尝试处理可能失败的命令,则应该不要在系统()调用中连接多个命令,因为您无法确定故障发生的位置。在这种情况下,您最好一次执行一个命令或创建一个执行适当错误处理的shell脚本,并调用该脚本。
在你的命令之间使用“&&”连接。这样做的好处是,只要命令返回成功的错误代码,它就会继续执行命令。例如:
"cd /proc && cat cpuinfo"
有一个可能性立即浮现在脑海中。您可以将所有命令写入脚本,然后使用以下命令运行它:
system ("cmd.exe /c \"x.cmd\"");
或者,既然我注意到你正在使用Fedora:
system ("x.sh");