Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

660
Visualizações
¿Por qué se reemplazó wait4() por waitpid()?

Estaba revisando la documentación de la llamada al sistema wait4() y en su página de manual está escrito

Estas funciones están obsoletas; use waitpid(2) o waitid(2) en programas nuevos.

Entonces, revisé la documentación de waitpid() y vi que hay una diferencia entre los dos.

waitpid() hace lo mismo que wait4() , pero wait4() , según la página man,

Además, devuelve información de uso de recursos sobre el niño en la estructura señalada por rusage .

Las dos llamadas al sistema se definen de la siguiente manera

 pid_t wait4(pid_t pid, int *status, int options, struct rusage *rusage); pid_t waitpid(pid_t pid, int *status, int options);

Ahora, también leí que hay otra llamada al sistema que hace ese trabajo adicional de obtener el rusage del niño y es getrusage() .

Entonces, puedo entender que lo que puede hacer wait4() , uno puede hacer lo mismo usando una combinación de waitpid() y getrusage() .


Pero, lo que no entiendo es que siempre hay una fuerte razón para hacer que una llamada al sistema quede obsoleta. Pero en este caso se siente que la funcionalidad se ha dividido.

  • Si quiero usar la combinación de waitpid() y getrusage() , tengo que verificar los valores devueltos dos veces, lo que no fue el caso de wait4() .
  • Además, se puede usar wait4() para obtener rusage de un hijo específico, pero waitpid() daría rusage de todos sus hijos juntos (si se usa con RUSAGE_CHILDREN ). Eso suena como una sobrecarga adicional si hay más de unos pocos procesos secundarios.

¿Por qué se hizo obsoleto wait4() ? Parece que hizo las cosas más difíciles.

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Es una cuestión de estandarización e historia. wait4 es una llamada al sistema 4.3BSD, pero POSIX.1 retuvo waitpid .

over 4 years ago · Santiago Trujillo Relatório

0

Tomado de http://pubs.opengroup.org/onlinepubs/009695399/functions/wait.html :

 The waitpid() function shall be equivalent to wait() if the pid argument is (pid_t)-1 and the options argument is 0. Otherwise, its behavior shall be modified by the values of the pid and options arguments

por lo que la función waitpid() se proporciona por tres razones:

 To support job control To permit a non-blocking version of the wait() function To permit a library routine, such as system() or pclose(), to wait for its children without interfering with other terminated children for which the process has not waited

Y también incluye todas las habilidades anteriores de wait() como se explica

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda