Para que dentro de un progrma podramos lanzar otro programa y realizar un atarea concreta, Linux ofrece varias funciones:
stdlib.h
su interfaz recibe como parámetro una cadena que indica el comando que se desea procesar, esta pasará al interprete de comando en el que esté ejecutándose. devolverá -1
si hay error y el estado en caso contrario.int system(const char *cadena)
Esta función no debe usarse des un programa con privilegios de administrador ya que puede usar valores extraños con algunas variables de entorno y se podría comprometer la seguridad del sistema.
system()
, y se encuentra en la librería unistd.h
.int execl (const char *fichero, const char *arg0, ..., char *argn, (char *)NULL);
unistd.h
.pid_t fork(void);
Creando nuestro primer programa de control de procesos proceso1.c
con system()
:
#include <stdio.h>
#include <stdlib.h>
void main() {
printf("Ejemplo de uso de system():");
printf("\n\tListado del directorio actual y envio a un fichero:");
printf("%d",system("ls > ficherosalida.txt"));
printf("\n\tAbrimos con nano el fichero ...");
printf("%d",system("nano ficherosalida.txt"));
printf("\n\tEste comando es erroneo: %d",system("msword"));
printf("\nFin del programa");
}
Creando nuestro segundo programa de control de procesos proceso2.c
con execl()
:
#include <stdio.h>
#include <unistd.h>
void main() {
printf("Ejemplo de uso de excel():");
printf("\n\tListado del directorio actual:");
execl("/bin/ls","ls","-l", (char *)NULL);
printf("\nEsta instrucción no se llega a ejecutar");
}