-rwxr-xr-x 1 nick users 9763 Oct 11 15:41 a.out -
rwxrwxrwx 1 nick users 986 Oct 11 15:20 fork1.c -
rwxrwxrwx 1 nick users 321 Oct 11 15:40 fork2.c Child
return code 0
Аталық-процес топжасағаннан кейін оның аяқталуын wait()
атқарымы көмегімен күтеді:
#include
#include
pid_t wait(int *status);
Бұл атқарым топ-процесінің орындалып болуын (егер олар бірнеше
болса, олардың қайсысы бірінші аяқталатыны маңызды) Атқарым
қайтаратын мәнді — аяқтайтын процестің PID мәнін күтеді. Статус
мәнін сілтеме бойынша беретін атқарымдар топтың қайтып келу коды
туралы ақпаратты кодтайтын санды және аяқталу сәтіндегі оның күйін
білдіреді. Қызықтыратын ақпаратты қарау
үшін WEXIT...0
макроанықтауыштардың
бірін
пайдалану
қажет.
Мысалы,
WEXISTATUS() макроанықтауыш статус мәніндегі қайтару кодының
номерін қайтарады.
Егер процес бірнеше топты іске қосып нақты бір процестің
аяқталуын күту қажет болса waitpid() атқарымы қолданылады:
#include
#include
pid_t waitpid(pid_t pid, int *status, int options);
бұл атқарымның бірінші аргументі — аяқталуын күтіп отырған PID
процесі, екіншісі – статус мәні. Үшінші параметр атқарымның жұмыс
режимін анықтайды.
Егер үшінші параметр 0 тең болса, ең болмағанда бір топ
аяқталмайынша процестің орындалуы тоқтайды.
Егер үшінші параметр ретінде WNOHANG константа берілсе,
статус мәні тек топ өз орындалуын аяқтағаннан кейін ғана
меншіктеледі; ол орындалмаған жағдайда аналық процестің орындалуы
жалғаса береді. Егер WNOHANG параметрі шықса және топ әлі
аяқталмаса, онда waitpid() атқарымы 0 қайтарады: