Un proceso es una instancia de un programa en ejecución. Un programa puede tener múltiples procesos ejecutándose simultáneamente.
En C, los procesos se crean utilizando la función fork(). Esta función crea un nuevo proceso duplicando el proceso que la llama.
fork()#include <stdio.h>
#include <unistd.h>
int main() {
pid_t pid = fork();
if (pid == 0) {
// Código del proceso hijo
printf("Soy el proceso hijo\n");
} else if (pid > 0) {
// Código del proceso padre
printf("Soy el proceso padre\n");
} else {
// Error al crear el proceso
perror("fork");
return 1;
}
return 0;
}
fork(): Crea un nuevo proceso.exec(): Reemplaza el proceso actual con un nuevo programa.wait(): Espera a que un proceso hijo termine.exec()#include <stdio.h>
#include <unistd.h>
int main() {
char *args[] = {"/bin/ls", NULL};
execvp(args[0], args);
// Si execvp falla
perror("execvp");
return 1;
}
wait()#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
int main() {
pid_t pid = fork();
if (pid == 0) {
// Código del proceso hijo
printf("Soy el proceso hijo\n");
} else if (pid > 0) {
// Código del proceso padre
wait(NULL); // Espera a que el proceso hijo termine
printf("El proceso hijo ha terminado\n");
} else {
// Error al crear el proceso
perror("fork");
return 1;
}
return 0;
}
pid_t fork(void): No toma parámetros y devuelve el PID del proceso hijo al proceso padre, y 0 al proceso hijo.int execvp(const char *file, char *const argv[]): Toma el nombre del archivo a ejecutar y una lista de argumentos.pid_t wait(int *status): Toma un puntero a un entero donde se almacenará el estado de salida del proceso hijo.fork(): Es fundamental entender cómo fork() crea un nuevo proceso y cómo se comportan el proceso padre y el hijo.Para más información, consulta la documentación oficial de las funciones mencionadas: