كيف يمكن للبي تي واي سيد كشف إذا خرجت من الكتابة البعيدة الرقيق؟

StackOverflow https://stackoverflow.com/questions/264428

  •  06-07-2019
  •  | 
  •  

سؤال

وأنا أستخدم أسلوب BSD أزواج بي تي واي / الكتابة البعيدة لتنفيذ تشغيل قذيفة الفرعية. عندما ينهي المستخدم قذيفة الفرعية، كيف يمكنني كشف في عملية الرئيسي الذي حدث هذا؟ أنا أستخدم حدد (nfds، وread_fds، NULL، NULL، والمهلة)؛ مع واصف الماجستير ملف بي تي واي المنصوص عليها في read_fds على الجانب الرئيسي.

هل كانت مفيدة؟

المحلول 2

ولقد وجدت الإجابة على هذا السؤال من خلال دراسة الكود المصدري telnetd وجدت في حزمة inetutils GNU. في telnetd، فإنها تستخدم معالج SIGCHLD مثل هذا:

int status;
pid_t pid = waitpid((pid_t)-1, &status, WNOHANG);
syslog (LOG_INFO, "child process %ld exited: %d",
    (long) pid, WEXITSTATUS(status));
// do cleanup code

نصائح أخرى

وعادة ما يتم إنشاء المستوى الفرعي من قبل fork() من نوع ما. يتم إرجاع PID الطفل في سيد، والتي يمكن أن تحقق (مع waitpid()، ربما) إذا كان لا يزال قيد التشغيل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top