Что такое очередь сообщений windows

ЋзҐаҐ¤Ё б®®ЎйҐ­Ё©

Ѓ §®ўлҐ ЇаЁ­жЁЇл

ЋзҐаҐ¤Ё б®®ЎйҐ­Ё© ЇаҐ¤бв ў«пов б®Ў®© бўп§­л© бЇЁб®Є ў ¤аҐб­®¬ Їа®бва ­б⢥ п¤а . ‘®®ЎйҐ­Ёп ¬®Јгв Ї®бл« вмбп ў ®зҐаҐ¤м Ї® Ї®ап¤Єг Ё ¤®бв ў вмбп Ё§ ®зҐаҐ¤Ё ­ҐбЄ®«мЄЁ¬Ё а §­л¬Ё Їгвп¬Ё. Љ ¦¤ п ®зҐаҐ¤м б®®ЎйҐ­Ё© ®¤­®§­ з­® ®ЇаҐ¤Ґ«Ґ­ Ё¤Ґ­вЁдЁЄ в®а®¬ IPC .

‚­гв७­ЁҐ Ё Ї®«м§®ў ⥫мбЄЁҐ бвагЄвгал ¤ ­­ле

Љ«о箬 Є Ї®«­®¬г ®б®§­ ­Ёо в Є®© б«®¦­®© бЁб⥬л, Є Є System V IPC , пў«пҐвбп Ў®«ҐҐ вҐб­®Ґ §­ Є®¬бвў® б а §«Ёз­л¬Ё бвагЄвга ¬Ё ¤ ­­ле, Є®в®алҐ «Ґ¦ в ў­гваЁ б ¬®Ј® п¤а . „ ¦Ґ ¤«п Ў®«миЁ­бвў ЇаЁ¬ЁвЁў­ле ®ЇҐа жЁ© ­Ґ®Ўе®¤Ё¬ Їаאַ© ¤®бвгЇ Є ­ҐЄ®в®ал¬ Ё§ нвЁе бвагЄвга, е®вп ¤агЈЁҐ ЁбЇ®«м§говбп в®«мЄ® ­ Ј®а §¤® Ў®«ҐҐ ­Ё§Є®¬ га®ў­Ґ.

ЃгдҐа б®®ЎйҐ­Ёп

ЏҐаў®© бвагЄвга®©, Є®в®аго ¬л а бᬮваЁ¬, Ўг¤Ґв msgbuf . …Ј® ¬®¦­® Ї®­Ё¬ вм Є Є и Ў«®­ ¤«п ¤ ­­ле б®®ЎйҐ­Ёп. Џ®бЄ®«мЄг ¤ ­­лҐ ў б®®ЎйҐ­ЁЁ Їа®Ја ¬¬Ёбв ®ЇаҐ¤Ґ«пҐв б ¬, ®­ ®Ўп§ ­ Ї®­Ё¬ вм, зв® ­ б ¬®¬ ¤Ґ«Ґ ®­Ё пў«повбп бвагЄвга®© msgbuf . …Ј® ®ЇЁб ­ЁҐ ­ 室Ёвбп ў

  • :
    • type — ’ЁЇ б®®ЎйҐ­Ёп, ЇаҐ¤бв ў«Ґ­­л© ­ вга «м­л¬ зЁб«®¬. Ћ­ ®Ўп§ ­ Ўлвм ­ вга «м­л¬!
    • mtext — ‘®Ўб⢥­­® б®®ЎйҐ­ЁҐ.

    ‚®§¬®¦­®бвм ЇаЁЇЁблў вм вЁЇ Є®­ЄаҐв­®¬г б®®ЎйҐ­Ёо Ї®§ў®«пҐв ¤Ґа¦ вм ў ®¤­®© ®зҐаҐ¤Ё а §­®а®¤­лҐ б®®ЎйҐ­Ёп. ќв® ¬®¦Ґв Ї®­ ¤®ЎЁвмбп, ­ ЇаЁ¬Ґа, Є®Ј¤ б®®ЎйҐ­Ёп Їа®жҐбб -Є«ЁҐ­в Ї®¬Ґз овбп ®¤­Ё¬ ¬ ЈЁзҐбЄЁ¬ зЁб«®¬, б®®ЎйҐ­Ёп б®®ЎйҐ­Ёп Їа®жҐбб -бҐаўҐа — ¤агЈЁ¬; Ё«Ё ЇаЁ«®¦Ґ­ЁҐ бв ўЁв ў ®зҐаҐ¤м б®®ЎйҐ­Ёп ®Ў ®иЁЎЄ е б вЁЇ®¬ 1, б®®ЎйҐ­Ёп-§ Їа®бл — б вЁЇ®¬ 2 Ё в.¤. ‚ иЁ ў®§¬®¦­®бвЁ Їа®бв® ЎҐ§Ја ­Ёз­л.

    ‘ ¤агЈ®© бв®а®­л, бв а ©вҐбм ¤ вм ­ Ј«п¤­®Ґ Ё¬п н«Ґ¬Ґ­вг ¤ ­­ле б®®ЎйҐ­Ёп (ў ЇаЁ¬ҐаҐ Ўл« mtext ). ‚ нв® Ї®«Ґ ¬®¦­® § ЇЁблў вм ­Ґ в®«мЄ® ¬ ббЁўл «ЁвҐа, ­® Ё ў®®ЎйҐ «оЎлҐ ¤ ­­лҐ ў «оЎ®© д®а¬Ґ. Џ®«Ґ ¤Ґ©б⢨⥫쭮 Ї®«­®бвмо Їа®Ё§ў®«м­®, Ї®н⮬㠢бп бвагЄвга ¬®¦Ґв Ўлвм ЇҐаҐ®ЇаҐ¤Ґ«Ґ­ Їа®Ја ¬¬Ёб⮬, ­ ЇаЁ¬Ґа, в Є:

    ‡¤Ґбм ¬л в Є¦Ґ ўЁ¤Ё¬ бвагЄвгаг б®®ЎйҐ­Ёп, ­® ўв®а®© н«Ґ¬Ґ­в § ¬Ґ­Ё«бп ­ ¤ў , ЇаЁзҐ¬ ®¤Ё­ Ё§ ­Ёе — ¤агЈ п бвагЄвга ! ‚ н⮬ ЇаҐ«Ґбвм ®зҐаҐ¤Ґ© б®®ЎйҐ­Ё©, п¤а® ­Ґ а §ЎЁа Ґв ¤ ­­лҐ, Є ЄЁ¬Ё Ўл ®­Ё ­Ё Ўл«Ё.

    ‘гйҐбвўгҐв, ®¤­ Є®, ®Ја ­ЁзҐ­ЁҐ ­ ¬ ЄбЁ¬ «м­л© а §¬Ґа б®®ЎйҐ­Ёп. ‚ LINUX ®­ ®ЇаҐ¤Ґ«Ґ­ ў
    :

    ‘®®ЎйҐ­Ёп ­Ґ ¬®Јгв Ўлвм Ў®«миҐ, 祬 4056 Ў ©в, бо¤ ўе®¤Ёв Ё н«Ґ¬Ґ­в mtype , Є®в®ал© § ­Ё¬ Ґв 4 Ў ©в (long).

    ‘вагЄвга msg п¤а

    џ¤а® еа ­Ёв б®®ЎйҐ­ЁҐ ў ®зҐаҐ¤Ё бвагЄвгал msg . Ћ­ ®ЇаҐ¤Ґ«Ґ­ ў

  • б«Ґ¤гойЁ¬ ®Ўа §®¬:
    • msg_next — “Є § вҐ«м ­ б«Ґ¤го饥 б®®ЎйҐ­ЁҐ ў ®зҐаҐ¤Ё. ‘®®ЎйҐ­Ёп ®ЎкҐ¤Ё­Ґ­л ў ®¤­®бўп§­л© бЇЁб®Є Ё ­ 室пвбп ў ¤аҐб­®¬ Їа®бва ­б⢥ п¤а .
    • msg_type — ’ЁЇ б®®ЎйҐ­Ёп, Є ЄЁ¬ ®­ Ўл« ®Ўкпў«Ґ­ ў msgbuf .
    • msg_spot — “Є § вҐ«м ­ ­ з «® ⥫ б®®ЎйҐ­Ёп.
    • msg_ts — „«Ё­ ⥪бв (Ё«Ё ⥫ ) б®®ЎйҐ­Ёп.

    ‘вагЄвга msqid_ds п¤а

    Љ ¦¤л© Ё§ ваҐе вЁЇ®ў IPC -®ЎкҐЄв®ў Ё¬ҐҐв ў­гв७­ҐҐ ЇаҐ¤бв ў«Ґ­ЁҐ, Є®в®а®Ґ Ї®¤¤Ґа¦Ёў Ґвбп п¤а®¬. „«п ®зҐаҐ¤Ґ© б®®ЎйҐ­Ё© нв® бвагЄвга msqid_ds . џ¤а® б®§¤ Ґв, еа ­Ёв Ё б®Їа®ў®¦¤ Ґв ®Ўа §Ґж в Є®© бвагЄвгал ¤«п Є ¦¤®© ®зҐаҐ¤Ё б®®ЎйҐ­Ё© ў бЁб⥬Ґ. Ћ­ ®ЇаҐ¤Ґ«Ґ­ ў
    б«Ґ¤гойЁ¬ ®Ўа §®¬:

    •®вп Ў®«миЁ­бвў® н«Ґ¬Ґ­в®ў нв®© бвагЄвгал ў б Ўг¤Ґв ¬ «® ў®«­®ў вм, ¤«п Є Є®©-в® § Є®­зҐ­­®бвЁ ¬л ўЄа вжҐ Ї®пб­Ё¬ Є ¦¤л©.

    • msg_perm — ќЄ§Ґ¬Ї«па бвагЄвгал ipc_perm , ®ЇаҐ¤Ґ«Ґ­­®© ў
    • . Ћ­ ᮤҐа¦Ёв Ё­д®а¬ жЁо ® ¤®бвгЇҐ ¤«п ®зҐаҐ¤Ё б®®ЎйҐ­Ё©, ўЄ«оз п Їа ў ¤®бвгЇ Ё Ё­д®а¬ жЁо ® б®§¤ ⥫Ґ б®®ЎйҐ­Ёп ( uid Ё в.Ї.).
    • msg_first — ‘бл«Є ­ ЇҐаў®Ґ б®®ЎйҐ­ЁҐ ў ®зҐаҐ¤Ё (Ј®«®ў бЇЁбЄ ).
    • msg_last — ‘бл«Є ­ Ї®б«Ґ¤­Ё© н«Ґ¬Ґ­в бЇЁбЄ (еў®бв бЇЁбЄ ).
    • msg_stime — Њ®¬Ґ­в ўаҐ¬Ґ­Ё Ї®бл«ЄЁ Ї®б«Ґ¤­ҐЈ® б®®ЎйҐ­Ёп Ё§ ®зҐаҐ¤Ё.
    • msg_rtime — Њ®¬Ґ­в ўаҐ¬Ґ­Ё Ї®б«Ґ¤­ҐЈ® Ё§кпвЁп н«Ґ¬Ґ­в Ё§ ®зҐаҐ¤Ё.
    • msg_ctime — Њ®¬Ґ­в ўаҐ¬Ґ­Ё Ї®б«Ґ¤­ҐЈ® Ё§¬Ґ­Ґ­Ёп, Їа®¤Ґ« ­­®Ј® ў ®зҐаҐ¤Ё (Ї®¤а®Ў­ҐҐ ®Ў н⮬ Ї®§¦Ґ).
    • wwait Ё rwait — “Є § ⥫Ё ў ®зҐаҐ¤м ®¦Ё¤ ­Ёп п¤а . Ћ­Ё ЁбЇ®«м§говбп, Є®Ј¤ ®ЇҐа жЁп ­ ¤ ®зҐаҐ¤мо б®®ЎйҐ­Ё© ЇҐаҐў®¤Ёв Їа®жҐбб ў б®бв®п­ЁҐ бЇпзЄЁ (в® Ґбвм ®зҐаҐ¤м ЇҐаҐЇ®«­Ґ­ , Ё Їа®жҐбб ¦¤Ґв ®вЄалвЁп).
    • msg_cbytes — —Ёб«® Ў ©в, бв®пйЁе ў ®зҐаҐ¤Ё (б㬬 а­л© а §¬Ґа ўбҐе б®®ЎйҐ­Ё©).
    • msg_qnum — Љ®«ЁзҐбвў® б®®ЎйҐ­Ё© ў ®зҐаҐ¤Ё ­ ­ бв®пйЁ© ¬®¬Ґ­в.
    • msg_qbytes — Њ ЄбЁ¬ «м­л© а §¬Ґа ®зҐаҐ¤Ё.
    • msg_lspid — PID Їа®жҐбб , Ї®б« ўиҐЈ® Ї®б«Ґ¤­ҐҐ ў ®зҐаҐ¤Ё б®®ЎйҐ­ЁҐ.
    • msg_lrpid — PID Ї®б«Ґ¤­ҐЈ® Їа®жҐбб , ў§пўиҐЈ® Ё§ ®зҐаҐ¤Ё б®®ЎйҐ­ЁҐ.
    Читайте также:  Windows powershell что за файл

    ‘вагЄвга ipc_perm п¤а

    €­д®а¬ жЁо ® ¤®бвгЇҐ Є IPC-®ЎкҐЄв ¬ п¤а® еа ­Ёв ў бвагЄвгॠipc_perm . Ќ ЇаЁ¬Ґа, ®ЇЁб ­­ п ўлиҐ бвагЄвга ®зҐаҐ¤Ё б®®ЎйҐ­Ё© ᮤҐа¦Ёв ®¤­г бвагЄвгаг вЁЇ ipc_perm ў Є зҐб⢥ н«Ґ¬Ґ­в . ‘«Ґ¤го饥 ҐҐ ®ЇаҐ¤Ґ«Ґ­ЁҐ ¤ ­® ў
    .

    ‚ᥠЇаЁўҐ¤Ґ­­®Ґ ўлиҐ Ј®ў®аЁв б ¬® § ᥡп. ‘®еа ­пҐ¬ п ®в¤Ґ«м­® ў¬ҐбвҐ б Є«о箬 IPC-®ЎкҐЄв Ё­д®а¬ жЁп ᮤҐа¦Ёв ¤ ­­лҐ ® ў« ¤Ґ«мжҐ Ё б®§¤ ⥫Ґ нв®Ј® ®ЎкҐЄв (®­Ё ¬®Јгв а §«Ёз вмбп). ђҐ¦Ё¬л ў®б쬥аЁз­®Ј® ¤®бвгЇ в Є¦Ґ еа ­пвбп §¤Ґбм, Є Є unsigned short. Ќ Є®­Ґж, б®еа ­пҐвбп Ї®ап¤Є®ўл© ­®¬Ґа ЁбЇ®«м§®ў ­Ёп Ј­Ґ§¤ . Љ ¦¤л© а § Є®Ј¤ IPC ®ЎкҐЄв § Єалў Ґвбп зҐаҐ§ бЁб⥬­л© ўл§®ў (г­Ёз⮦ Ґвбп), нв®в ­®¬Ґа 㬥­ми Ґвбп ­ ¬ ЄбЁ¬ «м­®Ґ зЁб«® ®ЎкҐЄв®ў IPC, Є®в®алҐ ¬®Јгв ­ 室Ёвмбп ў бЁб⥬Ґ. Љ б Ґвбп ў б нв® §­ 祭ЁҐ? ЌҐв.

    ‘Ёб⥬­л© ўл§®ў msgget()

    ‘Ёб⥬­л© ўл§®ў msgget() ­г¦Ґ­ ¤«п в®Ј®, зв®Ўл б®§¤ вм ®зҐаҐ¤м б®®ЎйҐ­Ё© Ё«Ё Ї®¤Є«озЁвмбп Є бгйҐбвўго饩.

    PROTOTYPE: int msgget( key_t key, int msgflg );

    RETURNS: Ё¤Ґ­вЁдЁЄ в®а ®зҐаҐ¤Ё б®®ЎйҐ­Ё© ў б«гз Ґ гбЇҐе ; -1 ў б«гз Ґ ®иЁЎЄЁ.

    ЏҐаўл© аЈг¬Ґ­в msgget() §­ 祭ЁҐ Є«оз (¬л ҐЈ® Ї®«гз Ґ¬ ЇаЁ Ї®¬®йЁ ftok() ). ќв®в Є«оз ба ў­Ёў Ґвбп б Є«оз ¬Ё 㦥 бгйҐбвўгойЁе ў п¤аҐ ®зҐаҐ¤Ґ©. ЏаЁ н⮬ ®ЇҐа жЁп ®вЄалвЁп Ё«Ё ¤®бвгЇ Є ®зҐаҐ¤Ё § ўЁбЁв ®в ᮤҐа¦Ё¬®Ј® аЈг¬Ґ­в msgflg :

    • IPC_CREAT — ‘®§¤ Ґв ®зҐаҐ¤м, Ґб«Ё ®­ ­Ґ Ўл« б®§¤ ­ а ­ҐҐ.
    • IPC_EXCL — ЏаЁ ЁбЇ®«м§®ў ­ЁЁ б®ў¬Ґбв­® б IPC_CREAT , ЇаЁў®¤Ёв Є ­Ґг¤ зҐ Ґб«Ё ®зҐаҐ¤м 㦥 бгйҐбвўгҐв.

    ‚л§®ў msgget() б IPC_CREAT , ­® ЎҐ§ IPC_EXCL ўбҐЈ¤ ўл¤ Ґв Ё¤Ґ­вЁдЁЄ в®а (бгйҐбвўго饩 б в ЄЁ¬ Є«о箬 Ё«Ё б®§¤ ­­®©) ®зҐаҐ¤Ё. €бЇ®«м§®ў ­ЁҐ IPC_EXCL ў¬Ґб⥠б IPC_CREAT «ЁЎ® б®§¤ Ґв ­®ўго ®зҐаҐ¤м, «ЁЎ®, Ґб«Ё ®зҐаҐ¤м 㦥 бгйҐбвўгҐв, § Є ­зЁў Ґвбп ­Ґг¤ 祩. ‘ ¬®бв®п⥫쭮 IPC_EXCL ЎҐбЇ®«Ґ§Ґ­, ­® ў¬Ґб⥠c IPC_CREAT ®­ ¤ Ґв Ј а ­вЁо, зв® ­Ё ®¤­ Ё§ бгйҐбвўгойЁе ®зҐаҐ¤Ґ© ­Ґ ®вЄалў Ґвбп ¤«п ¤®бвгЇ .

    ‚®б쬥аЁз­л© ०Ё¬ ¬®¦Ґв Ўлвм OR-­гв ў ¬ бЄг ¤®бвгЇ . Љ ¦¤л© IPC-®ЎкҐЄв Ё¬ҐҐв Їа ў ¤®бвгЇ , ­ «®ЈЁз­лҐ Їа ў ¬ ¤®бвгЇ Є д ©«г ў д ©«®ў®© бЁб⥬Ґ UNIX- .

    Ќ ЇЁиҐ¬ ®ЎҐав®з­го дг­ЄжЁо ¤«п ®вЄалвЁп Ё«Ё б®§¤ ­Ёп ®зҐаҐ¤Ё б®®ЎйҐ­Ё©.

    Ћв¬Ґвм⥠ЁбЇ®«м§®ў ­ЁҐ в®з­®Ј® ®Ја ­ЁзЁвҐ«п ¤®бвгЇ 0660. ќв ­ҐЎ®«ми п дг­ЄжЁп ў®§ўа й Ґв Ё¤Ґ­вЁдЁЄ в®а ®зҐаҐ¤Ё (int) Ё«Ё -1 ў б«гз Ґ ®иЁЎЄЁ. …¤Ё­б⢥­­л© ваҐЎгҐ¬л© аЈг¬Ґ­в — Є«о祢®Ґ §­ 祭ЁҐ.

    ‘Ёб⥬­л© ўл§®ў msgsnd()

    Џ®«гзЁў Ё¤Ґ­вЁдЁЄ в®а ®зҐаҐ¤Ё, ¬л ¬®¦Ґ¬ ўлЇ®«­пвм ­ ¤ ­Ґ© а §«Ёз­лҐ ¤Ґ©бвўЁп. —в®Ўл Ї®бв ўЁвм б®®ЎйҐ­ЁҐ ў ®зҐаҐ¤м, ЁбЇ®«м§г©вҐ бЁб⥬­л© ўл§®ў msgsnd() :

    PROTOTYPE: int msgsnd( int msqid, struct msgbuf *msgp, int msgsz, int msgflg );

    RETURNS: 0 ў б«гз Ґ гбЇҐе , -1 ў б«гз Ґ ®иЁЎЄЁ:

    ЏҐаўл© аЈг¬Ґ­в msgsnd — Ё¤Ґ­вЁдЁЄ в®а ­ 襩 ®зҐаҐ¤Ё, ў®§ўа 饭­л© ЇаҐ¤ў аЁвҐ«м­л¬ ўл§®ў®¬ msgget . ‚в®а®© аЈг¬Ґ­в, msgp — нв® гЄ § вҐ«м ­ ।ҐЄ« аЁа®ў ­­л© Ё § Ја㦥­­л© ЎгдҐа б®®ЎйҐ­Ёп. ЂаЈг¬Ґ­в msgsz ᮤҐа¦Ёв ¤«Ё­г б®®ЎйҐ­Ёп ў Ў ©в е, ­Ґ гзЁвлў п вЁЇ б®®ЎйҐ­Ёп (long 4 Ў ©в ). ЂаЈг¬Ґ­в msgflg ¬®¦Ґв Ўлвм ­г«Ґ¬ Ё«Ё:

    • IPC_NOWAIT — …б«Ё ®зҐаҐ¤м ЇҐаҐЇ®«­Ґ­ , в® б®®ЎйҐ­ЁҐ ­Ґ § ЇЁблў Ґвбп ў ®зҐаҐ¤м, Ё гЇа ў«Ґ­ЁҐ ЇҐаҐ¤ Ґвбп ўл§лў о饬㠯а®жҐббг. …б«Ё нв бЁвг жЁп ­Ґ ®Ўа Ў влў Ґвбп ўл§лў ойЁ¬ Їа®жҐбᮬ, в® ®­ ЇаЁ®бв ­ ў«Ёў Ґвбп (Ў«®ЄЁагҐвбп), Ї®Є б®®ЎйҐ­ЁҐ ­Ґ Ўг¤Ґв Їа®зЁв ­®.

    Ќ ЇЁиҐ¬ ­Ґ§ ⥩«Ёўго ®ЎҐав®з­го дг­ЄжЁо ¤«п Ї®бл«ЄЁ б®®ЎйҐ­Ёп:

    ќв дг­ЄжЁп Їлв Ґвбп Ї®б« вм б®®ЎйҐ­ЁҐ, «Ґ¦ 饥 Ї® гЄ § ­­®¬г ¤аҐбг ( qbuf ), ў ®зҐаҐ¤м б®®ЎйҐ­Ё©, Ё¤Ґ­вЁдЁжЁа®ў ­­го qid . Ќ ЇЁиҐ¬ ­ҐЎ®«миго гвЁ«Ёвг б ­ иЁ¬Ё ¤ўг¬п ®ЎҐав®з­л¬Ё дг­ЄжЁп¬Ё:

    Џ®б«Ґ б®§¤ ­Ёп/®вЄалвЁп ­ 襩 ®зҐаҐ¤Ё ЇаЁ­Ё¬ Ґ¬бп § § Јаг§Єг ЎгдҐа б®®ЎйҐ­Ёп б вҐбв®ўл¬Ё ¤ ­­л¬Ё (§ ¬Ґвм⥠®вбгвбвўЁҐ ⥪бв®ўле ¤ ­­ле ¤«п Ё««обва жЁЁ ­ 襣® Ї®«®¦Ґ­Ёп ® Ї®бл«ЄҐ ¤ў®Ёз­®© Ё­д®а¬ жЁЁ). ‚л§®ў ­ 襣® send_message «®ўЄ® ¤®бв ўЁв б®®ЎйҐ­ЁҐ ў ®зҐаҐ¤м.

    Читайте также:  Редактор xml файлов для linux

    ’ҐЇҐам, Є®Ј¤ ¬л Ё¬ҐҐ¬ б®®ЎйҐ­ЁҐ ў ®зҐаҐ¤Ё, Ї®Їлв ©вҐбм ЇаЁ Ї®¬®йЁ ipcs Ї®б¬®ваҐвм ­ бв вгб ­ 襩 ®зҐаҐ¤Ё. ЋЎбг¤Ё¬, Є Є § Ўа вм Ё§ ®зҐаҐ¤Ё б®®ЎйҐ­ЁҐ. „«п нв®Ј® ЁбЇ®«м§гҐвбп бЁб⥬­л© ўл§®ў msgrcv()

    ‘Ёб⥬­л© ўл§®ў msgrcv()

    PROTOTYPE: int msgrcv( int msqid, struct msgbuf *msgp, int msgsz, long mtype, $$)

    RETURNS: зЁб«® Ў ©в, бЄ®ЇЁа®ў ­­ле ў ЎгдҐа б®®ЎйҐ­Ёп, -1 ў б«гз Ґ ®иЁЎЄЁ.

    Љ®­Ґз­®, ЇҐаўл© аЈг¬Ґ­в ®ЇаҐ¤Ґ«пҐв ®зҐаҐ¤м, Ё§ Є®в®а®© Ўг¤Ґв ў§пв® б®®ЎйҐ­ЁҐ (¤®«¦Ґ­ Ўлвм ў®§ўа 饭 ᤥ« ­­л¬ ЇаҐ¤ў аЁвҐ«м­® ўл§®ў®¬ msgget ) . ‚в®а®© аЈг¬Ґ­в ( msgp ) ЇаҐ¤бв ў«пҐв б®Ў®© ¤аҐб ЎгдҐа , Єг¤ Ўг¤Ґв Ї®«®¦Ґ­® Ё§кп⮥ б®®ЎйҐ­ЁҐ. ’аҐвЁ© аЈг¬Ґ­в, msgsz , ®Ја ­ЁзЁў Ґв а §¬Ґа бвагЄвгал-ЎгдҐа ЎҐ§ гзҐв ¤«Ё­л н«Ґ¬Ґ­в mtype . …йҐ а § Ї®ўв®аЁ¬бп, нв® ¬®¦Ґв Ўлвм «ҐЈЄ® ўлзЁб«Ґ­®:

    —ҐвўҐавл© аЈг¬Ґ­в, mtype — нв® вЁЇ б®®ЎйҐ­Ёп, Ё§л¬ Ґ¬®Ј® Ё§ ®зҐаҐ¤Ё. џ¤а® Ўг¤Ґв ЁбЄ вм ў ®зҐаҐ¤Ё ­ ЁЎ®«ҐҐ бв ஥ б®®ЎйҐ­ЁҐ в Є®Ј® вЁЇ Ё ўҐа­Ґв ҐЈ® Є®ЇЁо Ї® ¤аҐбг, гЄ § ­­®¬г аЈг¬Ґ­в®¬ msgp . ‘гйҐбвўгҐв ®¤Ё­ ®б®Ўл© б«гз ©: Ґб«Ё mtype = 0, в® Ўг¤Ґв ў®§ўа 饭® ­ ЁЎ®«ҐҐ бв ஥ б®®ЎйҐ­ЁҐ, ­Ґ§ ўЁбЁ¬® ®в вЁЇ .

    …б«Ё IPC_NOWAIT Ўл« Ї®б« ­ д« Ј®¬, Ё ­Ґв ­Ё ®¤­®Ј® 㤮ў«Ґвў®аЁвҐ«м­®Ј® б®®ЎйҐ­Ёп, msgrcv ўҐа­Ґв ўл§лў о饬㠯а®жҐббг ENOMSG. ‚ Їа®вЁў­®¬ б«гз Ґ ўл§лў ойЁ© Їа®жҐбб Ў«®ЄЁагҐвбп, Ї®Є ў ®зҐаҐ¤м ­Ґ ЇаЁЎг¤Ґв б®®ЎйҐ­ЁҐ, ᮮ⢥вбвўго饥 Ї а ¬Ґва ¬ msgrcv().

    …б«Ё, Ї®Є Є«ЁҐ­в ¦¤Ґв б®®ЎйҐ­Ёп, ®зҐаҐ¤м г¤ «пҐвбп, в® Ґ¬г ў®§ўа й Ґвбп EIDRM. EINTR ў®§ўа й Ґвбп, Ґб«Ё бЁЈ­ « Ї®бвгЇЁ«, Ї®Є Їа®жҐбб ­ 室Ё«бп ­ Їа®¬Ґ¦гв®з­®© бв ¤ЁЁ ¬Ґ¦¤г ®¦Ё¤ ­ЁҐ¬ Ё Ў«®ЄЁа®ўЄ®©.

    „ ў ©вҐ а бᬮваЁ¬ дг­ЄжЁо-ЇҐаҐе®¤­ЁЄ ¤«п Ё§кпвЁп б®®ЎйҐ­Ёп Ё§ ­ 襩 ®зҐаҐ¤Ё.

    Џ®б«Ґ гбЇҐи­®Ј® Ё§кпвЁп б®®ЎйҐ­Ёп г¤ «пҐвбп Ё§ ®зҐаҐ¤Ё Ё ҐЈ® па«лЄ.

    ЃЁв MSG_NOERROR ў msgflg ЇаҐ¤®бв ў«пҐв ­ҐЄ®в®алҐ ¤®Ї®«­ЁвҐ«м­лҐ ў®§¬®¦­®бвЁ. …б«Ё дЁ§ЁзҐбЄ п ¤«Ё­ б®®ЎйҐ­Ёп Ў®«миҐ, 祬 msgsz , Ё MSG_NOERROR гбв ­®ў«Ґ­, в® б®®ЎйҐ­ЁҐ ®ЎаҐ§ Ґвбп Ё ў®§ўа й Ґвбп в®«мЄ® msgsz Ў ©в. Ќ®а¬ «м­л© ¦Ґ msgrcv() ў®§ўа й Ґв -1 (E2BIG), Ё б®®ЎйҐ­ЁҐ ®бв Ґвбп ў ®зҐаҐ¤Ё ¤® Ї®б«Ґ¤гойЁе § Їа®б®ў. ’ Є®Ґ Ї®ўҐ¤Ґ­ЁҐ ¬®¦­® ЁбЇ®«м§®ў вм ¤«п б®§¤ ­Ёп ¤агЈ®© ®ЎҐав®з­®© дг­ЄжЁЁ, Є®в®а п Ї®§ў®«Ёв ­ ¬ «Ї®¤Ј«п¤лў вм» ў­гвам ®зҐаҐ¤Ё, зв®Ўл г§­ вм, ЇаЁи«® «Ё б®®ЎйҐ­ЁҐ, 㤮ў«Ґвў®апо饥 ­ 襬㠧 Їа®бг.

    ‚лиҐ ўл § ¬ҐвЁ«Ё ®вбгвбвўЁҐ ¤аҐб ЎгдҐа Ё ¤«Ё­л. ‚ н⮬ Є®­ЄаҐв­®¬ б«гз Ґ ¬л е®вҐ«Ё, зв®Ўл ўл§®ў Їа®иҐ« ­Ґг¤ з­®. Ћ¤­ Є® ¬л Їа®ўҐаЁ«Ё ў®§ўа 饭ЁҐ E2BIG, Є®в®а®Ґ ¤®«¦­® Ї®Є § вм, бгйҐбвўгҐв «Ё б®®ЎйҐ­ЁҐ § вॡ®ў ­­®Ј® вЁЇ . ЋЎҐав®з­ п дг­ЄжЁп ў®§ўа й Ґв TRUE ў б«гз Ґ гбЇҐе , Ё FALSE — ў Їа®вЁў­®¬ б«гз Ґ. Ћв¬Ґвм⥠⠪¦Ґ гбв ­®ў«Ґ­­л© д« Ј IPC_NOWAIT , Є®в®ал© Ї®¬Ґи Ґв Ў«®ЄЁа®ўЄҐ, ® Є®в®а®© ¬л Ј®ў®аЁ«Ё а ­миҐ.

    ‘Ёб⥬­л© ўл§®ў msgctl()

    Ѓ« Ј®¤ ап ЁбЇ®«м§®ў ­Ёо дг­ЄжЁ©-ЇҐаҐе®¤­ЁЄ®ў ўл Ё¬ҐҐвҐ ­ҐЄЁ© н«ҐЈ ­в­л© Ї®¤е®¤ Є б®§¤ ­Ёо Ё ЁбЇ®«м§®ў ­Ёо ®зҐаҐ¤Ґ© б®®ЎйҐ­Ё© ў ў иЁе ЇаЁ«®¦Ґ­Ёпе. ’ҐЇҐам Є®б­Ґ¬бп ­ҐЇ®б।б⢥­­® ¬ ­ЁЇг«Ёа®ў ­Ёп ў­гв७­Ё¬Ё бвагЄвга ¬Ё, бўп§ ­­л¬Ё б ¤ ­­®© ®зҐаҐ¤мо б®®ЎйҐ­Ё©.

    „«п ®бгйҐбвў«Ґ­Ёп Є®­ва®«п ­ ¤ ®зҐаҐ¤мо ЇаҐ¤­ §­ 祭 бЁб⥬­л© ўл§®ў msgбtl .

    PROTOTYPE: int msgctl ( int msgqid, int cmd, struct msqid_ds *buf );

    RETURNS: 0 ў б«гз Ґ гбЇҐе ,-1 ў б«гз Ґ ­Ґг¤ зЁ

    ’ҐЇҐам Ё§ ®ЎйЁе б®®Ўа ¦Ґ­Ё© пб­®, зв® Їап¬лҐ ¬ ­ЁЇг«пжЁЁ б ў­гв७®бвп¬Ё п¤а ¬®Јгв ЇаЁўҐбвЁ Є ®зҐ­м § ­Ё¬ ⥫м­л¬ Ї®б«Ґ¤бвўЁп¬. Љ ᮦ «Ґ­Ёо, Ї®-­ бв®п饬㠢ҐбҐ«® Ўг¤Ґв в®«мЄ® ⮬г, Єв® «оЎЁв ў¤аҐЎҐ§ЈЁ Ё б ­ б« ¦¤Ґ­ЁҐ¬ ЄагиЁвм Ї®¤бЁб⥬г IPC . Ћ¤­ Є® ЇаЁ ЁбЇ®«м§®ў ­ЁЁ msgctl() б ­ҐЄ®в®ал¬Ё Є®¬ ­¤ ¬Ё ўҐа®пв­®бвм ®Ј®азЁвҐ«м­ле १г«мв в®ў ­Ґ ®зҐ­м ўҐ«ЁЄ . ‚®в Ёе Ё а бᬮваЁ¬.

    • IPC_STAT — ‘®еа ­пҐв Ї® ¤аҐбг buf бвагЄвгаг msqid_ds ¤«п ®зҐаҐ¤Ё б®®ЎйҐ­Ё©.
    • IPC_SET — “бв ­ ў«Ёў Ґв §­ 祭ЁҐ н«Ґ¬Ґ­в ipc_perm бвагЄвгал msqid . ‡­ 祭Ёп ўлЎЁа Ґв Ё§ ЎгдҐа .
    • IPC_RMID — “¤ «пҐв ®зҐаҐ¤м Ё§ п¤а .

    ‚Ґа­Ґ¬бп Є ­ 襬г а §Ј®ў®аг ® ў­гв७­Ґ¬ ЇаҐ¤бв ў«Ґ­ЁЁ ®зҐаҐ¤Ё б®®ЎйҐ­Ё©: msqid_ds . џ¤а® ¤Ґа¦Ёв нЄ§Ґ¬Ї«па нв®© бвагЄвгал ¤«п Є ¦¤®© ®зҐаҐ¤Ё, бгйҐбвўго饩 ў бЁб⥬Ґ. IPC_STAT ¤ Ґв ў®§¬®¦­®бвм § Ё¬Ґвм Є®ЇЁо в Є®© бвагЄвгал ¤«п ЁбЇлв ­Ё©. Џ®б¬®ваЁ¬ ­ ®ЎҐав®з­го дг­ЄжЁо, Є®в®а п ЎҐаҐв нвг бвагЄвгаг Ё а §¬Ґй Ґв Є®ЇЁо Ї® гЄ § ­­®¬г ¤аҐбг.

    Читайте также:  Относительный абсолютный путь linux

    …б«Ё Є®ЇЁа®ў ­ЁҐ ў® ў­гв७­Ё© ЎгдҐа ­Ґў®§¬®¦­®, в® ўл§лў о饩 дг­ЄжЁЁ ў®§ўа й Ґвбп -1. …б«Ё ¦Ґ ўбҐ Їа®и«® ­®а¬ «м­®, в® ў®§ўа й Ґвбп 0, Ё Ї®б« ­­л© ЎгдҐа ¤®«¦Ґ­ ᮤҐа¦ вм Є®ЇЁо ў­гв७­Ґ© бвагЄвгал ¤ ­­ле ¤«п ®зҐаҐ¤Ё б Ё¤Ґ­вЁдЁЄ в®а®¬ qid .

    —в® ¦Ґ ¬л ¬®¦Ґ¬ ¤Ґ« вм б Ї®«г祭­®© Є®ЇЁҐ© бвагЄвгал? …¤Ё­б⢥­­®Ґ, зв® ¬®¦­® Ї®¬Ґ­пвм, нв® н«Ґ¬Ґ­в ipc_perm . ќв® Їа ў ¤®бвгЇ ®зҐаҐ¤Ё, Ё­д®а¬ жЁп ® б®§¤ ⥫Ґ Ё ў« ¤Ґ«мжҐ ®зҐаҐ¤Ё. Ћ¤­ Є® Ё ®вбо¤ ¬Ґ­пвм Ї®§ў®«Ґ­® в®«мЄ® mode, uid Ё gid .

    „ ў ©вҐ ­ ЇЁиҐ¬ ®ЎҐав®з­го дг­ЄжЁо, Ё§¬Ґ­пойго ०Ё¬ ¤®бвгЇ ®зҐаҐ¤Ё. ђҐ¦Ё¬ ¤®«¦Ґ­ Ўлвм ЇҐаҐ¤ ­ Є Є ¬ ббЁў «ЁвҐа (­ ЇаЁ¬Ґа, «660»).

    Њл ў§п«Ё ⥪гйго Є®ЇЁо ў­гв७­Ґ© бвагЄвгал ¤ ­­ле Ї®б।бвў®¬ ўл§®ў ­ 襩 get_queue_ds ; § ⥬ sscanf() ¬Ґ­пҐв н«Ґ¬Ґ­в mode бвагЄвгал msg_perm . Ћ¤­ Є® ­ЁзҐЈ® ­Ґ Їа®Ё§®©¤Ґв, Ї®Є msgctl c IPC_SET ­Ґ ®Ў­®ўЁ« ў­гв७­оо ўҐабЁо.

    Ћ‘’ЋђЋ†ЌЋ! €§¬Ґ­пп Їа ў ¤®бвгЇ , ¬®¦­® б«гз ©­® «ЁиЁвм Їа ў ᥡп б ¬®Ј®! Џ®¬­ЁвҐ, зв® IPC-®ЎкҐЄвл ­Ґ Ёб祧 ов, Ї®Є ®­Ё ­Ґ г­Ёз⮦Ґ­л ¤®«¦­л¬ ®Ўа §®¬ Ё«Ё ­Ґ ЇҐаҐ§ Ја㦥­ бЁб⥬ . Џ®н⮬г в®, зв® ўл ­Ґ ўЁ¤ЁвҐ ®зҐаҐ¤Ё ipcs-®¬, ­Ґ ®§­ з Ґв, зв® ҐҐ ­Ґв ­ б ¬®¬ ¤Ґ«Ґ.

    Џ®б«Ґ в®Ј®, Є Є б®®ЎйҐ­ЁҐ ў§пв® Ё§ ®зҐаҐ¤Ё, ®­® г¤ «пҐвбп. Ћ¤­ Є®, Є Є ®в¬Ґз «®бм а ­ҐҐ, IPC-®ЎкҐЄвл ®бв овбп ў бЁб⥬Ґ ¤® ЇҐаб®­ «м­®Ј® г¤ «Ґ­Ёп Ё«Ё ЇҐаҐ§ ЇгбЄ ўбҐ© бЁб⥬л. Џ®н⮬㠭 и ®зҐаҐ¤м б®®ЎйҐ­Ё© ўбҐ ҐйҐ бгйҐбвўгҐв ў п¤аҐ Ё ЇаЁЈ®¤­ Є гЇ®вॡ«Ґ­Ёо ў «оЎ®Ґ ўаҐ¬п, ­Ґб¬®вап ­ в®, зв® Ї®б«Ґ¤­ҐҐ ҐЈ® б®®®ЎйҐ­ЁҐ 㦥 ¤ ў­® ­ ­ҐЎҐб е. —в®Ўл Ё ¤ги ­ 襩 ®зҐаҐ¤Ё б ¬Ёа®¬ ®в®и« Є Ў®Ј ¬, ­г¦Ґ­ ўл§®ў msgctl() , ЁбЇ®«м§гойЁ© Є®¬ ­¤г IPC_RMID :

    ќв дг­ЄжЁп-ЇҐаҐе®¤­ЁЄ ў®§ўа й Ґв 0, Ґб«Ё ®зҐаҐ¤м г¤ «Ґ­ ЎҐ§ Ё­жҐ¤Ґ­в®ў, ў Їа®вЁў­®¬ б«гз Ґ ўўл¤ Ґвбп -1. “¤ «Ґ­ЁҐ ®зҐаҐ¤Ё ­Ґ¤Ґ«Ё¬® Ё Ї®ЇлвЄ «оЎ®Ј® ®Ўа 饭Ёп Є ­Ґ© Ўг¤Ґв ЎҐ§гбЇҐи­®©.

    msgtool: Ё­вҐа ЄвЁў­л© ®Ўа Ў®взЁЄ ®зҐаҐ¤Ґ© б®®ЎйҐ­Ё©

    Њ «® Єв® бв ­Ґв ®ваЁж вм ­ҐЇ®б।б⢥­­го ўлЈ®¤г ®в ў®§¬®¦­®бвЁ ў «оЎ®© ¬®¬Ґ­в Ї®«гзЁвм в®з­го вҐе­ЁзҐбЄго Ё­д®а¬ жЁо. Џ®¤®Ў­лҐ ¬ вҐаЁ «л ЇаҐ¤бв ў«пов б®Ў®© ¬®й­л© ¬Ґе ­Ё§¬ ¤«п ®Ўг祭Ёп Ё Ёбб«Ґ¤®ў ­Ёп ­®ўле ®Ў« б⥩. Ћ¤­ Є®, ­ҐЇ«®е® Ўл«® Ўл ¤®Ў ўЁвм Є вҐе­ЁзҐбЄ®© Ё­д®а¬ жЁЁ Ё ॠ«м­лҐ ЇаЁ¬Ґал. ќв® ­ҐЇаҐ¬Ґ­­® гбЄ®аЁв Ё гЄаҐЇЁв Їа®жҐбб ®Ўг祭Ёп.

    „® ᥩ Ї®ал ўбҐ в® е®а®иҐҐ, зв® ¬л ᤥ« «Ё — нв® ®ЎҐав®з­лҐ дг­ЄжЁЁ ¤«п ¬ ­ЁЇг«пжЁ© б ®зҐаҐ¤п¬Ё б®®ЎйҐ­Ё©. •®вп ®­Ё з१ўлз ©­® Ї®«Ґ§­л, Ё¬Ё ­Ґг¤®Ў­® Ї®«м§®ў вмбп ¤«п ¤ «м­Ґ©иҐЈ® ®Ўг祭Ёп Ё нЄбЇҐаЁ¬Ґ­в®ў. ‘гйҐбвўгҐв б।бвў®, Ї®§ў®«по饥 а Ў®в вм б IPC-®зҐаҐ¤п¬Ё Ё§ Є®¬ ­¤­®© бва®ЄЁ — msgtool() . •®вп msgtool() Ўг¤Ґв ЁбЇ®«м§®ў ­ ў 楫пе ®Ўг祭Ёп, ®­ ЇаЁЈ®¤Ёвбп Ё ॠ«м­® ЇаЁ ­ ЇЁб ­ЁЁ бЄаЁЇв®ў.

    ЋЇЁб ­ЁҐ

    Џ®ўҐ¤Ґ­ЁҐ msgtool() — § ўЁбЁв ®в аЈг¬Ґ­в®ў Є®¬ ­¤­®© бва®ЄЁ, з⮠㤮Ў­® ¤«п ўл§®ў Ё§ бЄаЁЇв shell . Џ®§ў®«пҐв ¤Ґ« вм ўбҐ зв® гЈ®¤­®, ®в б®§¤ ­Ёп, Ї®бл«ЄЁ Ё Ї®«г祭Ёп б®®ЎйҐ­Ё© ¤® । ЄвЁа®ў ­Ёп Їа ў ¤®бвгЇ Ё г¤ «Ґ­Ёп ®зҐаҐ¤Ё. €§­ з «м­® ¤ ­­л¬Ё б®®ЎйҐ­Ё© ¬®Јгв Ўлвм в®«мЄ® «ЁвҐа­лҐ ¬ ббЁўл. “Їа ¦­Ґ­ЁҐ — Ё§¬Ґ­ЁвҐ нв® в Є, зв®Ўл ¬®¦­® Ўл«® Ї®бл« вм Ё ¤агЈЁҐ ¤ ­­лҐ.

    ‘Ё­в ЄбЁб Є®¬ ­¤­®© бва®ЄЁ

    Џ®бл«Є б®®ЎйҐ­Ё© — msgtool s (type) «text»

    €§кпвЁҐ б®®ЎйҐ­Ё© — msgtool r (type)

    €§¬Ґ­Ґ­ЁҐ Їа ў ¤®бвгЇ — msgtool m (mode)

    “­Ёз⮦Ґ­ЁҐ ®зҐаҐ¤Ё — msgtool d

    ‘«Ґ¤го饥, зв® ¬л а бᬮваЁ¬, нв® Ёб室­л© ⥪бв msgtool . …Ј® б«Ґ¤гҐв Є®¬ЇЁ«Ёа®ў вм ў ўҐабЁЁ бЁб⥬л, Є®в®а п Ї®¤¤Ґа¦Ёў Ґв System V IPC. “ЎҐ¤ЁвҐбм ў ­ «ЁзЁЁ System V IPC ў п¤аҐ, Є®Ј¤ Ўг¤ҐвҐ ЇҐаҐб®ЎЁа вм Їа®Ја ¬¬г!

    Ќ Ї®«пе ®в¬ҐвЁ¬, зв® ­ и гвЁ«Ёв Ўг¤Ґв ўбҐЈ¤ б®§¤ ў вм ®зҐаҐ¤м, Ґб«Ё ҐҐ ­Ґ Ўл«®.

    ‡ ¬Ґз ­ЁҐ. Џ®бЄ®«мЄг msgtool ЁбЇ®«м§гҐв ftok() ¤«п ЈҐ­Ґа жЁЁ Є«о祩 IPC, ўл ¬®¦ҐвҐ ­ аў вмбп ­ Є®­д«ЁЄвл, бўп§ ­­лҐ б ¤ЁаҐЄв®аЁп¬Ё. …б«Ё ўл Ј¤Ґ-в® ў бЄаЁЇвҐ ¬Ґ­пҐвҐ ¤ЁаҐЄв®аЁЁ, в® ўбҐ нв® ­ ўҐа­пЄ ­Ґ ба Ў®в Ґв. ќв® ®Ўе®¤Ёвбп Їг⥬ Ў®«ҐҐ пў­®Ј® гЄ § ­Ёп ЇгвЁ ў msgtool, ўа®¤Ґ «/tmp/msgtool», Ё«Ё ¤ ¦Ґ § Їа®б ЇгвЁ Ё§ Є®¬ ­¤­®© бва®ЄЁ ў¬ҐбвҐ б ®бв «м­л¬Ё аЈг¬Ґ­в ¬Ё.

  • Оцените статью