kuting (NULL);
printf("Bola To'liq");
}
qaytish 0;
}
Rasm 3.8 Yaratish a alohida jarayon foydalanish the UNIX vilka() tizimi qo'ng'iroq qiling.
uning bajarilishi. Shu tarzda, ikkala jarayon o'zaro muloqot qilishlari mumkin va keyin ket ularning alohida yo'llari. The ota-ona mumkin keyin yaratmoq Ko'proq bolalar; yoki, agar Bola yugurayotganda uning boshqa hech qanday aloqasi yo'q, u kutishni berishi mumkin () tizim chaqiruvi bola tugatilgunga qadar tayyor navbatdan o'zini ko'chirish. exec() ga qo'ng'iroq jarayonning manzil maydonini yangi dastur bilan qoplaganligi sababli, exec() xatolik yuz bermaguncha boshqaruvni qaytarmaydi.
3.8-rasmda ko'rsatilgan C dasturi ilgari UNIX tizim chaqiruvlarini tasvirlaydi tasvirlangan. Biz hozir bor ikki boshqacha jarayonlar yugurish nusxalari ning xuddi shu dastur. The faqat farq hisoblanadi bu the qiymat ning the o'zgaruvchan uchun pid bola jarayon hisoblanadi nol, esa bu uchun the ota-ona hisoblanadi a butun son qiymat kattaroq noldan (in haqiqat, bu hisoblanadi the haqiqiy pid ning the bola jarayon). The bola jarayon imtiyozlarni meros qilib oladi va rejalashtirish atributlar dan the ota-ona, kabi yaxshi aniq resurslar, masalan, ochiq fayllar. Keyin bola jarayoni execlp() tizim chaqiruvidan foydalangan holda /bin/ls (kataloglar ro'yxatini olish uchun ishlatiladi) UNIX buyrug'i bilan manzil maydonini qoplaydi ( execlp() exec() tizim chaqiruvining versiyasidir ). Ota-ona , wait() tizimi chaqiruvi bilan bola jarayoni tugashini kutadi . Bola jarayoni tugagach ( exit() ni bilvosita yoki aniq chaqirish orqali), ota-ona jarayoni wait() ga qoʻngʻiroqni davom ettiradi va u erda exit() tizim chaqiruvi yordamida yakunlanadi. Bu 3.9-rasmda ham ko'rsatilgan.
exec() ni chaqirmasligi va uning o'rniga ota-ona jarayonining nusxasi sifatida bajarishda davom etishiga hech narsa to'sqinlik qilmaydi . Bu stsenariyda, the ota-ona va bola bor bir vaqtda jarayonlar yugurish the bir xil kod ko'rsatmalari. Chunki the bola hisoblanadi a nusxa ko'chirish ning the ota-ona, har biri jarayon ega uning har qanday ma'lumotlarning shaxsiy nusxasi.
Sifatida a muqobil misol, biz Keyingisi ko'rib chiqing jarayon yaratish ichida Windows. Jarayonlar bor yaratilgan ichida the Windows API yordamida the CreateProcess() funktsiyasi, qaysi hisoblanadi o'xshash uchun vilka() ichida bu a ota-ona yaratadi a yangi bola jarayon. Biroq, holbuki vilka() ega the bola jarayon meros olish the manzil ning maydoni uning ota-ona, CreateProcess() talab qiladi yuklash a belgilangan dastur ichiga jarayonni yaratishda bola jarayonining manzil maydoni . Bundan tashqari, fork() hisoblanadi o'tdi yo'q parametrlar, CreateProcess() kutadi yo'q kamroq dan o'n parametr.
3.10-rasmda ko'rsatilgan C dasturi CreateProcess() funksiyasini tasvirlaydi, qaysi yaratadi a bola jarayon bu yuklar the ilova mspaint.exe . Biz CreateProcess() ga o'tkazilgan o'nta parametrning ko'pgina standart qiymatlarini tanlaymiz . Windows API -da jarayonlarni yaratish va boshqarish tafsilotlarini o'rganishga qiziqqan o'quvchilarga ushbu bobning oxiridagi bibliografik eslatmalarga murojaat qilish tavsiya etiladi.
The ikki parametrlar o'tdi uchun the CreateProcess() funktsiyasi ning misollaridir STARTUPINFO va PROCESS INFORMATION tuzilmalari. STARTUPINFO belgilaydi ko'p xususiyatlari ning the yangi jarayon, shunday kabi oyna
Dostları ilə paylaş: |