👨‍💻
Coding Library
  • 👨‍💻Coding Library
  • 👾Linux
    • Basic Commands
    • Other commands
      • Ls
      • Mv
      • Chmod
      • Ln
      • Cat
      • Wc
      • Grep
      • Sed
      • Find
    • Sistema de ficheros
      • Inodos
  • 📦Git
    • Page 3
  • 🖊️Vim
    • Vim Basics
      • Gramatica de Vim
      • Moviendote por un archivo
    • Todo y mas
  • 🏛️C
    • Estructuras de datos
      • Listas Enlazadas
      • Colas
      • Pilas
      • Arboles
    • Valgrind
    • Operadores de bits
    • Procesos e Hilos
      • Fork
      • Wait
      • Waitpid
      • Semáforos
      • Estructura sigaction
      • Signals
    • MiniLibX
      • Ventanas (windows)
      • Imprimir Pixels
      • Imagenes
      • Colores
      • Eventos
      • Loops (bucles)
      • Leer imagenes
    • Readline
    • Funciones
      • opendir
      • access
    • Network Programming
      • Structs
      • Llamadas al sistema
      • Synchronous I/O Multiplexing
        • kqueue
  • 🌃C++
    • Clases
      • Herencia
      • Shallow and deeps copies
      • Clases abstractas y Interfaces
      • Reasignar operadores
    • Punteros y referencias
    • Manejo de ficheros
    • Punteros a funciones
    • Excepciones
    • Casting
    • Templates
    • Templated Containers
      • Iterators
      • std::vector
      • std::list
      • std::map
  • 🧠Pyhton
    • Sintaxis basica
    • Scripts
    • Tipos de datos
      • Listas
      • Set
      • Diccionarios
      • Generadores
    • Estructuras de control
      • Iterar con For
      • Iterar con zip
      • Iterar con enumerate
    • Map, Filter and Reduce
    • Funciones
    • Clases
      • Metodos
      • Herencia
    • Formateo con {} y format()
    • Decoradores
  • 📦JAVA
    • Conceptos basicos
    • Programacion estructurada
    • Clases predefinidas
    • POO
      • Clases
      • Herencia
      • Polimorfismo
      • Abstraccion
      • Encapsulacion
    • ArrayList
    • Excepciones
  • ⚒️HTML
    • HTML Basics
    • Elementos de bloque
      • Titulos y parrafos
      • Header, Main y Footer
      • Section, article y aside
    • Elementos en línea
    • Atributos
    • Enlaces <a>
    • Listas
    • Tablas
    • Formularios
      • Input
      • Select y datalist
      • GET y POST
    • Contenido embebido
      • Imagenes
      • Audio y video
      • Iframe
  • 🎨CSS
    • Introduccion
    • Selectores
    • Como funciona CSS
    • Box Model
    • Desbordamiento y Colapso de margenes
    • Display
    • Position
    • Medidas absolutas y relativas
  • 🟡JavaScript
    • Promesas
    • Async/Await
  • 📲Svelte
    • Componentes
    • Reactividad
    • Directivas
    • Eventos
  • 🖥️Sistemas
    • Particiones
  • 🕸️Redes
    • IP Adress
    • Subnet Mask
  • 🕷️Web Scrapping
    • Scrapy
      • Spiders
        • CrawlerSpider
      • Process data
      • Save data
        • CSV y JSON
        • SQLite
    • Splash
    • Selenium
Powered by GitBook
On this page
  • Syntaxis
  • Utilice macros para mostrar el estado de espera del proceso secundario en C
  • Bibliografia
  1. C
  2. Procesos e Hilos

Waitpid

Monitorear estados de proceso

PreviousWaitNextSemáforos

Last updated 2 years ago

La llamada del sistema wait tiene múltiples limitaciones y, para cubrir funciones más avanzadas, es necesario utilizar la función waitpid. Es decir, si un proceso crea varios hijos y el padre necesita supervisar a un hijo específico, solo waitpid puede hacer esto.

Waitpid devuelve el ID del proceso del hijo que terminó, o cero si se utilizó WNOHANG y no hay hijo disponible, o -1 en caso de error (en este caso, errno se pone a un valor apropiado).

Syntaxis

pid_t waitpid(pid_t pid, int *status, int options);

El waitpid toma tres argumentos, el primero de los cuales es el número de identificación del proceso (pid). PID puede tener múltiples valores prediseñados con diferentes efectos:

  • < -1 --> Espere cualquier proceso secundario cuyo ID de grupo de procesos sea igual al valor absoluto de pid

  • -1 --> se puede pasar para monitorear cualquier proceso hijo que cambie su estado primero, que se usa para implementar la funcionalidad wait.

  • 0 --> Espere cualquier proceso secundario cuyo ID de grupo de procesos sea igual al del proceso que llama

  • >0 --> implica que el valor debe ser el ID de proceso real que se devolvió desde la función fork, que a su vez se usa para monitorear solo un proceso hijo específico

El segundo argumento es de tipo puntero int y debemos declarar una variable entera para pasar su dirección a la función. waitpid, por otro lado, almacenará la información del estado del niño en la variable int dada, que luego se puede decodificar usando las macros predefinidas. este es el mismo argumentos que se le pasa a wait.

El último argumento es de tipo int, y se usa para especificar ciertos eventos de proceso hijo a monitorear además de los predeterminados.

Utilice macros para mostrar el estado de espera del proceso secundario en C

Para oder monitorizar los procesos se utilizan las siguientes macros, pero en caso de que no quieras hacerlo se puede pasar el parametro 0.

  • WNOHANG --> significa que vuelve inmediatamente si ningún hijo ha terminado. Solo chequea, no espera a que termine el proceso.

  • WUNTRACED --> que significa que también vuelve si hay hijos parados (pero no rastreados), y de cuyo estado no ha recibido notificación. El estado para los hijos rastreados que están parados también se proporciona sin esta opción.

  • WCONTINUED --> También devolver si un hijo detenido ha sido retomado por entrega de SIGCONT.

Bibliografia

🏛️
https://www.delftstack.com/es/howto/c/waitpid-in-c/
https://stackoverflow.com/questions/21248840/example-of-waitpid-in-use
https://linux.die.net/man/2/waitpid
https://manpages.ubuntu.com/manpages/xenial/es/man2/wait.2.html
https://ciksiti.com/es/chapters/9183-waitpid-syscall-in-c