. [EACCES]
ბლოკავს თუ არა Msgrcv?
msgsnd და msgrcv ფუნქციები შეიძლება შესრულდეს როგორც დაბლოკვის, ისე არადაბლოკვის ოპერაციების სახით. არადაბლოკვის ოპერაციები იძლევა შეტყობინების ასინქრონულ გადაცემას -- პროცესი არ ჩერდება შეტყობინების გაგზავნის ან მიღების შედეგად.
აშლის თუ არა msgrcv შეტყობინებას რიგიდან?
msgrcv სისტემური ზარი აშორებს შეტყობინებას msqid-ით მითითებული რიგიდან და ათავსებს მას msgp-ით მითითებულ ბუფერში. არგუმენტი msgsz განსაზღვრავს მაქსიმალურ ზომას ბაიტებში სტრუქტურის წევრის მტექსტისთვის, რომელზეც მითითებულია msgp არგუმენტი.
როგორ მუშაობს msgrcv?
msgrcv ფუნქცია წაიკითხავს შეტყობინებას შეტყობინებების რიგიდან, რომელიც მითითებულია msqid პარამეტრით და ათავსებს მას მომხმარებლის მიერ განსაზღვრულ ბუფერში, რომელზეც მითითებულია msgp პარამეტრი. msgp პარამეტრი მიუთითებს მომხმარებლის მიერ განსაზღვრულ ბუფერზე, რომელიც უნდა შეიცავდეს შემდეგს: long int ტიპის ველი, რომელიც განსაზღვრავს შეტყობინების ტიპს.
რას აბრუნებს msgrcv?
RETURN VALUE
წარმატებული დასრულების შემდეგ, msgrcv აბრუნებს მნიშვნელობას, რომელიც უდრის ბუფერულ mtext-ში რეალურად განთავსებული ბაიტების რაოდენობას. წინააღმდეგ შემთხვევაში, შეტყობინება არ მიიღება, msgrcv დაბრუნდება (ssize_t)-1 და errno დაყენდება შეცდომის აღსანიშნავად.