Linux komandasini o'rganing - kuting

Ism

kuting, waitpid - jarayonni bekor qilishni kuting

Sinopsis

#include
#include

pid_t kuting (int * maqomi );
pid_t waitpid (pid_t pid , int * maqomi , int variantlari );

Ta'rif

Kutish funktsiyasi joriy jarayonni bajarishdan oldin bola chiqquncha to'xtatib turadi, yoki amaldagi jarayonni to'xtatish yoki signalni boshqarish funksiyasini chaqirish uchun signal yuborilguncha to'xtatiladi. Agar bola chaqiruv vaqtida ("zombi" deb ataladigan jarayon) allaqachon chiqqan bo'lsa, funktsiya darhol qaytariladi. Bolaning foydalanishi mumkin bo'lgan har qanday tizim resurslari ozod bo'ladi.

Waitpid funktsiyasi, pid argumenti bilan belgilanadigan bola yoki joriy ishni tugatish yoki signalni boshqarish funktsiyasini chaqirish uchun signal yuborilgunga qadar joriy jarayonning bajarilishini to'xtatadi. Agar pid tomonidan talab qilingan chaqaloq chaqiruv vaqtida ("zombi" deb ataladigan jarayon) allaqachon chiqqan bo'lsa, funktsiya darhol qaytariladi. Bolaning foydalanishi mumkin bo'lgan har qanday tizim resurslari ozod bo'ladi.

Pidning qiymati quyidagilardan biri bo'lishi mumkin:

<-1

bu jarayon guruhi identifikatori pidning mutlaq qiymatiga teng bo'lgan har qanday bola jarayonini kutishni anglatadi.

-1

bu har qanday bola jarayonini kutish demakdir; bu eksponatlarni kutadigan xulq.

0

ya'ni jarayon guruhi identifikatori chaqiruv jarayoniga teng bo'lgan har qanday bola jarayonini kutishni anglatadi.

> 0

ya'ni jarayon identifikatori pid qiymatiga teng bo'lgan bolani kutish degan ma'noni anglatadi.

Variantlarning qiymati quyidagi sobit turdagi nol yoki bir nechta OR:

WNOHANG

bu esa, hech qanday bola chiqmasa darhol qaytishni anglatadi.

WUNTRACED

bu esa to'xtatilgan va maqomini bildirmagan bolalarni qaytarish demakdir.

(Faqat Linux-ni tanlash uchun pastga qarang.)

Vaziyat NULL bo'lmasa, kutib turing yoki waitpid do'koni holat ma'lumotlarini vaziyat bo'yicha ko'rsatiladigan joyda saqlang.

Ushbu maqom quyidagi makrolar bilan baholanishi mumkin (bu makrolar argumentlarni argument (buferga ko'rsatadigan ko'rsatgich emas, balki):

WIFEXITED ( status )

bola odatdagidan chiqsa, nol yo'q.

WEXITSTATUS ( status )

bolaning chaqiruv kodining eng kamida sakkiz santigrat darajasini baholaydi va tugatilgan chaqiruv argumenti yoki asosiy dasturda qaytarma bayonotining argumenti sifatida belgilanishi mumkin. WIFEXITED nolga aylantirilmasa, bu so'lni baholash mumkin.

WIFSIGNALED ( status )

agar bola jarayoni ushlanmagan signal tufayli chiqsa, u haqiqatni qaytaradi.

WTERMSIG ( status )

bola jarayonining tugatilishiga sabab bo'lgan signal sonini qaytaradi. Bu so'lni faqat WIFSIGNALED nolga aylantirilmasa baholanishi mumkin.

WIFSTOPPED ( status )

agar qaytib kelishga sabab bo'lgan bola jarayoni hozirda to'xtatilgan bo'lsa; bu faqat qo'ng'iroq WUNTRACED yordamida amalga oshirilsa mumkin .

WSTOPSIG ( status )

bolaning to'xtatilishiga sabab bo'lgan signal sonini qaytaradi. Ushbu so'lni faqat WIFSTOPPED nolga aylantirilmasa baholanishi mumkin.

Unixning ba'zi versiyalari (masalan, Linux, Solaris, lekin AIX, SunOS) shuningdek, bola jarayonining yadro yadrosi yoki yo'qligini tekshirish uchun makro WCOREDUMP ( status ) ni belgilaydi. Buni faqat #ifdef WCOREDUMP ... #endif ilovasida qo'shib qo'ying.

Qaytish qiymati

Chiqib ketgan bolaning jurnali identifikatori yoki WNOHANG ishlatilganida va bolada mavjud bo'lmaganida, yoki 1da xato (bu erda errno tegishli qiymatga o'rnatiladi).

Xatolar

ECHILD

agar ko'rsatilgan jarayon pid mavjud emas yoki chaqiruv jarayonining bolasi emas. (Agar SIGCHLD uchun amallar SIG_IGN deb belgilansa, bu o'z farzandingiz uchun bo'lishi mumkin.) Shuningdek, mavzu bo'yicha LINUX NOTES bo'limiga ham qarang.)

EINVAL

agar variantlar mustaqil o'zgaruvchisi yaroqsiz bo'lsa.

EINTR

agar WNOHANG o'rnatilmasa va blokirovka qilingan signal yoki SIGCHLD tutilsa .