C++ Ejecutar línea de comando

Naila Saad Siddiqui 12 octubre 2023
C++ Ejecutar línea de comando

Este artículo discutirá brevemente el método system() para ejecutar comandos en un procesador de comandos a través de un programa C++.

C/C++ proporciona una función que puede hacer esto sin asumir la carga de generar otro proceso que pueda ejecutar el procesador de línea de comandos para ejecutar los comandos CMD.

Utilice el método system() para ejecutar comandos de línea de comandos en C++

La función system() ha sido durante mucho tiempo parte de la biblioteca estándar de C, y también podemos incluirla en el código de C++ sin necesidad de bibliotecas adicionales. Esta función ejecuta un comando de shell desde el proceso de llamada.

Sin embargo, debe tenerse en cuenta que el sistema() está diseñado para casos de uso específicos en los que el programa que realiza la llamada necesita generar un único proceso secundario y rápidamente comenzar a esperar a que finalice.

Como resultado, la función se implementa utilizando varias llamadas al sistema disponibles como parte de la interfaz API del sistema.

En el entorno Linux, el programador no necesita tomarse el dolor de cabeza de las funciones fork, exec y wait que controlan la creación y eliminación de nuevos procesos secundarios.

Sintaxis, Parámetros y Valores de Retorno del Método system() en C++

La sintaxis de esta función es:

int system(const char* cmd_text);

El único parámetro pasado a la función system() es una matriz char que contiene el texto del comando. El procesador de comandos ejecuta este texto de comando.

Recuerda que podemos pasar un puntero Null como parámetro a esta función para comprobar la disponibilidad del procesador de comandos.

Si se pasa un comando como parámetro a esta función, el sistema() normalmente devuelve el estado de salida de ese comando. Aún así, a veces el valor devuelto depende del comando y la utilidad.

Supongamos que se pasa un puntero Nulo para comprobar la disponibilidad del procesador de comandos. En ese caso, devuelve un 0 si el procesador de comandos no está disponible y un valor distinto de cero en caso contrario.

Códigos de ejemplo para demostrar la línea de comandos de ejecución de C++

El siguiente ejemplo muestra la aplicación más básica de la función system(), que ejecuta la utilidad de línea de comandos date para imprimir la fecha actual del sistema.

#include <stdlib.h>

#include <iostream>
using namespace std;

int main() {
  system("date");
  return 0;
}

Generará la siguiente salida:

Sat Sep 10 09:17:19 PM UTC 2022

Veamos otro ejemplo, en el que primero comprobaremos si el procesador de comandos está presente o no y luego ejecutaremos el comando ls -l utilizando la función system().

#include <stdlib.h>

#include <iostream>
using namespace std;

int main() {
  if (system(NULL)) {
    cout << "Command Processor OK" << endl;
    cout << "Running ls command" << endl;
    system("ls -l");
  } else
    cout << "Command Processor not found!!" << endl;

  return 0;
}

Dará el siguiente resultado:

Command Processor OK
Running ls command
total 24
-rwxr-xr-x 1 root root 16744 Sep 10 21:18 jdoodle
-rw-r--r-- 1 root root   315 Sep 10 21:18 jdoodle.cpp