Ვისწავლოთ Linux ბრძანება - დაველოდოთ

სახელი

დაველოდოთ, waitpid - დაველოდოთ პროცესის შეწყვეტა

სინოფსისი

# ჩართეთ
# ჩართეთ

pid_t დაველოდოთ (int * სტატუსი );
pid_t waitpid (pid_t pid , int * სტატუსი , int ვარიანტი );

აღწერა

ლოდინის ფუნქცია წყვეტს ამჟამინდელი პროცესის აღსრულებას, სანამ ბავშვი არ გადის, ან სანამ სიგნალი გადაეცემა, რომლის მოქმედების შეწყვეტა მიმდინარე პროცესის შეწყვეტას ან სიგნალის გატარების ფუნქციას. თუ ბავშვი უკვე გამოვიდა ზარის (ე.წ. "Zombie" პროცესის) მიერ, ფუნქცია დაუყოვნებლივ უბრუნდება. ბავშვის მიერ გამოყენებული ნებისმიერი სისტემის რესურსები გათავისუფლებულია.

Waitpid ფუნქცია წყვეტს ამჟამინდელი პროცესის შესრულებას ბავშვის მიერ, როგორც ეს განსაზღვრულია PID არგუმენტში, ან სანამ სიგნალი გადაეცემა, რომლის ქმედებაც შეწყდება მიმდინარე პროცესის ან სიგნალის გატარების ფუნქციის შესასრულებლად. თუ ბავშვი, როგორც ამას ითხოვს, უკვე გამოდის ზარის (ე.წ. "zombie" პროცესის) მიერ, ფუნქცია დაუყოვნებლივ უბრუნდება. ბავშვის მიერ გამოყენებული ნებისმიერი სისტემის რესურსები გათავისუფლებულია.

ღირებულება pid შეიძლება იყოს ერთი:

<-1

რაც იმას ნიშნავს, რომ დაელოდა ნებისმიერი ბავშვის პროცესი, რომლის პროცესი ჯგუფის ID უდრის აბსოლუტური სიდის აბსოლუტურ ღირებულებას.

-1

რაც იმას ნიშნავს, რომ დაელოდა ნებისმიერი ბავშვის პროცესი; ეს არის იგივე ქცევა, რომელიც დააკმაყოფილებს ექსპონატებს.

0

რაც იმას ნიშნავს, რომ დაელოდა ნებისმიერი ბავშვის პროცესი, რომლის პროცესის ჯგუფის ID უდრის დარეკვის პროცესს.

> 0

რაც იმას ნიშნავს, რომ დაელოდა ბავშვი, რომლის პროცესი ID უდრის pid ღირებულებას.

პარამეტრების ღირებულება არის შემდეგი უწყვეტი ან ნულოვანი ან მეტი:

WNOHANG

რაც იმას ნიშნავს, რომ დაუყოვნებლივ დაბრუნდეს, თუ ბავშვი არ გადის.

WUNTRACED

რაც იმას ნიშნავს, რომ დაბრუნდება ბავშვებისთვის, რომლებიც შეჩერებულია და რომლის სტატუსიც არ არის ცნობილი.

(Linux- ისთვის მხოლოდ ვარიანტებისთვის იხილეთ ქვემოთ.)

თუ სტატუსი არ არის NULL , დაველოდოთ ან დაველოდოთ მაღაზიის სტატუსს, რომელიც მდებარეობს ადგილმდებარეობის მიხედვით.

ეს სტატუსი შეიძლება შეფასდეს შემდეგი მაკროსებით (ეს მაკროსი იღებს stat buffer ( int ) არგუმენტს - არა ბუფერული მაჩვენებელი):

WIFEXITED ( სტატუსი )

არის ნულოვანი თუ ბავშვი ჩვეულებრივ გამოვიდა.

WEXITSTATUS ( სტატუსი )

აფასებს ბავშვის დაბრუნების კოდექსის არანაკლებ მნიშვნელოვან რვა ბიტს, რომელიც შეწყდა, რომელიც შეიძლება გამოიწვიოს არგუმენტი როგორც გასასვლელად () ან როგორც არგუმენტი მთავარ პროგრამაში დაბრუნების შესახებ. ეს მაკრო შეიძლება შეფასდეს მხოლოდ იმ შემთხვევაში, თუ WIFEXITED დაბრუნდა არასამთავრობო ნულოვანი.

WIFSIGNALED ( სტატუსი )

ბრუნდება თუ ბავშვის პროცესი გამოვიდა სიგნალის გამო, რომელიც არ დაიჭირეს.

WTERMSIG ( სტატუსი )

დააბრუნებს სიგნალის რაოდენობას, რამაც გამოიწვია ბავშვის პროცესი შეწყვიტოს. ეს მაკრო შეიძლება შეფასდეს მხოლოდ იმ შემთხვევაში, თუ WIFSIGNALED დაბრუნდა არასამთავრობო ნულოვანი.

WIFSTOPPED ( სტატუსი )

ბრუნდება ჭეშმარიტი თუ ბავშვის პროცესი, რომელიც გამოიწვია დაბრუნების ამჟამად შეჩერებულია; ეს შესაძლებელია მხოლოდ იმ შემთხვევაში, თუ ზარი გაკეთდა გამოყენებით WUNTRACED .

WSTOPSIG ( სტატუსი )

დააბრუნებს სიგნალის რაოდენობას, რამაც ბავშვი შეწყვიტა. ეს მაკრო შეიძლება შეფასდეს მხოლოდ იმ შემთხვევაში, თუ WIFSTOPPED დაბრუნდა არასამთავრობო ნულოვანი.

Unix- ის ზოგიერთი ვერსია (მაგალითად, Linux, Solaris, მაგრამ AIX, SunOS) ასევე განსაზღვრავს მაკრო WCOREDUMP ( სტატუსს ), რათა შეამოწმოთ თუ არა ბავშვის პროცესი. მხოლოდ გამოიყენეთ ეს თან ერთვის WCOREDUMP #fdef- ში ...

დაბრუნება ღირებულება

ბავშვის პროცესი ID, რომელიც გამოდის ან ნულოვანია, თუ გამოიყენებოდა WNOHANG და არც ერთი ბავშვი არ იყო ხელმისაწვდომი, ან -1 შეცდომა (ასეთ შემთხვევებში მითითებული უნდა იყოს შესაბამისი მნიშვნელობა).

შეცდომები

ECHILD

თუ პროცესი მითითებული pid არ არსებობს ან არ არის ბავშვის დარეკვის პროცესი. (ეს შეიძლება მოხდეს საკუთარი შვილისთვის, თუ SIGCHIN- ის ქმედება SIG_IGN- ისთვისაა მითითებული. აგრეთვე იხილეთ LINUX NOTES- ის სექციის თემა.

EINVAL

თუ პარამეტრების არგუმენტი არასწორია.

EINTR

თუ WNOHANG არ იყო მითითებული და მოხსნა სიგნალი ან SIGCHLD დაიჭირეს.