2 - Creación de un Proceso


Tutorial creado por tux.cl . Extraido de: http://www.tux.cl/articulos.php?id=22
27 Diciembre 2004
Ahora que ya sabemos las nociones básicas de los procesos y los pipes, es tiempo de crear un pipe con C. Para crear un proceso hay que usar la función fork(). Esta crea un proceso hijo, la cual originalmente es un clon del proceso padre, para más información recomiendo hacer un man fork.

fork() devuelve un valor de tipo pid_t (es el número que aparece con el comando ps). El valor retornado por la función debe ser distinto de -1 (al no ser que haya ocurrido un error o no se haya podido crear el proceso). Para el proceso hijo valdrá 0, mientras que el padre tendrá el identificador del proceso hijo.

pid_t pid;

      pid=fork();

      if (pid == -1 {

                 perror("fork");

                 exit(1);

      }

      if (pid == 0) {                 puts("PROCESO HIJO");                 exit(0);      } else            printf("PROCESO PADRE, EL PROCESO HIJO ES %d", pid);

Por lo general, es común que el proceso hijo llame a exec para cargar un directorio ejecutable, para así ejecutar un código distinto al del proceso padre:

      EChar *argv[] = {"ls, "-la", 0};

      pid=fork()

      if (pid == 0)

        execvp(argv[0], argv);

Este código reemplaza el proceso actual por el proceso ls -la. La llamada a execvp() espera hasta recibir una matriz de punteros a cadenas de caracteres. En la entrada 0 de la matriz debe ir el nombre del proceso que se desea correr y luego los parámetros que se desean.

Autor y licencia de 'Programación de Pipes en Linux (1ra parte)'


Tutorial de tux.cl . Extraido de: http://www.tux.cl/articulos.php?id=22 CopyLeft
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.