Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

657
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!