Using a Single system() Call to Execute Multiple Commands in C

前端 未结 3 659
攒了一身酷
攒了一身酷 2020-12-03 18:51

In an information security lab I\'m working on, I\'ve been tasked with executing multiple commands with a single call to \"system()\" (written in C, running on Fedora). Wha

相关标签:
3条回答
  • 2020-12-03 19:11

    One possibility comes immediately to mind. You could write all the commands to a script then run it with:

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

    or, now that I've noticed you're running on Fedora:

    system ("x.sh");
    
    0 讨论(0)
  • 2020-12-03 19:15

    Use && between your commands. It has the advantage that it only continues executing commands as long as they return successful error codes. Example:

    "cd /proc && cat cpuinfo"

    0 讨论(0)
  • 2020-12-03 19:30

    That depends on the shell being invoked to execute the commands, but in general most shells use ; to separate commands so something like this should work:

    command1; command2; command3
    

    [EDIT]

    As @dicroce mentioned, you can use && instead of ; which will stop execution at the first command that returns a non-zero value. This may or may not be desired (and some commands may return non-zero on success) but if you are trying to handle commands that can fail you should probably not string multiple commands together in a system() call as you don't have any way of determining where the failure occured. In this case your best bet would either be to execute one command at a time or create a shell script that performs the appropriate error handling and call that instead.

    0 讨论(0)
提交回复
热议问题