sirven - programacion basica c++
Uso de un solo sistema() Llamada para ejecutar mĂșltiples comandos en C (3)
Eso depende de la shell que se invoque para ejecutar los comandos, pero en general la mayoría de las shells usan ;
para separar comandos para que algo como esto funcione:
command1; command2; command3
[EDITAR]
Como se mencionó en @dicroce, puedes usar &&
lugar de ;
que detendrá la ejecución en el primer comando que devuelve un valor distinto de cero. Esto puede o no ser deseado (y algunos comandos pueden devolver un valor distinto de cero en caso de éxito), pero si intenta manejar comandos que pueden fallar, probablemente no debe encadenar varios comandos en una llamada al sistema () ya que no tiene cualquier forma de determinar dónde ocurrió la falla. En este caso, su mejor opción sería ejecutar un comando a la vez o crear un script de shell que realice el manejo de errores apropiado y llamarlo en su lugar.
En un laboratorio de seguridad de la información en el que estoy trabajando, me han encargado la ejecución de varios comandos con una sola llamada a "sistema ()" (escrito en C, ejecutándose en Fedora). ¿Cuál es la sintaxis que me permitirá ejecutar más comandos que a través de system ()? (La idea es que podría ejecutar comandos arbitrarios a través de un programa que se ejecuta en una computadora remota, si el programa interactúa con el sistema operativo a través de la llamada al sistema ()).
Es decir:
char command[] = "????? /r/n";
system(command);
Una posibilidad viene inmediatamente a la mente. Puede escribir todos los comandos en un script y luego ejecutarlo con:
system ("cmd.exe /c /"x.cmd/"");
o, ahora que me he dado cuenta de que estás ejecutando en Fedora:
system ("x.sh");
Usa && entre tus comandos. Tiene la ventaja de que solo continúa ejecutando comandos siempre que devuelvan códigos de error exitosos. Ejemplo:
"cd / proc && cat cpuinfo"