Ե՞րբ է ձախողվելու msgrcv-ը:

Բովանդակություն:

Ե՞րբ է ձախողվելու msgrcv-ը:
Ե՞րբ է ձախողվելու msgrcv-ը:
Anonim

msgrcv ֆունկցիան ձախողվի, եթե՝ [E2BIG] mtext-ի արժեքը մեծ է msgsz-ից և (msgflg & MSG_NOERROR) 0: [EACCES]

Արդյո՞ք Msgrcv-ն արգելափակում է:

msgsnd և msgrcv ֆունկցիաները կարող են կատարվել որպես արգելափակող կամ չարգելափակող գործողություններ: Չարգելափակող գործողությունները թույլ են տալիս հաղորդագրությունների ասինխրոն փոխանցում. գործընթացը չի կասեցվում հաղորդագրություն ուղարկելու կամ ստանալու արդյունքում:

msgrcv-ը հեռացնում է հաղորդագրությունը հերթից:

msgrcv համակարգային զանգը հեռացնում է հաղորդագրությունը msqid-ով նշված հերթից և տեղադրում է msgp-ով մատնանշված բուֆերում: Արգումտն msgsz սահմանում է msgp արգումենտով մատնանշված կառուցվածքի անդամ mtext-ի առավելագույն չափը բայթերով:

Ինչպե՞ս է աշխատում msgrcv-ը:

msgrcv ֆունկցիան կարդում է հաղորդագրություն հաղորդագրությունների հերթից, որը նշված է msqid պարամետրով և տեղադրում է օգտվողի կողմից սահմանված բուֆերում, որը մատնանշված է msgp պարամետրով: msgp պարամետրը ցույց է տալիս օգտվողի կողմից սահմանված բուֆերը, որը պետք է պարունակի հետևյալը. long int տիպի դաշտ, որը նշում է հաղորդագրության տեսակը։

Ի՞նչ է վերադարձնում msgrcv-ը:

RETURN VALUE

Հաջողությամբ ավարտից հետո msgrcv-ը վերադարձնում է արժեք, որը հավասար է բուֆերային mtext իրականում տեղադրված բայթերի քանակին: Հակառակ դեպքում ոչ մի հաղորդագրություն չի ստացվի, msgrcv-ը կվերադառնա (ssize_t)-1, իսկ errno-ն կսահմանվի սխալը ցույց տալու համար:

Խորհուրդ ենք տալիս: