Se connecter
Se connecter
Inscription
Mot de passe perdu
Connexion:
[Actualités]
Flight Simulator et Halo arriveraient sur Switch 2 et PS5
[Actualités]
Xbox annonce un Developer_Direct le 23 janvier
[Actualités]
Test VOIN (PC) - Un hack'n slash à la troisième personne réalisé par un dév...
[Actualités]
Voici comment créer des chatbots IA sur WhatsApp
[Actualités]
Samsung prépare un abonnement pour les smartphones Galaxy : l'IA est exclue pou...
[Actualités]
Voici ce que Gemini peut faire sur Google TV : la révolution viendra-t-elle de ...
[Actualités]
Sony lance également Android 15 sur les anciens smartphones
[Actualités]
Google Home devient enfin plus rapide : prise en charge locale des appareils Mat...
[Actualités]
Google Discover lance un podcast personnalisé pour les utilisateurs : de quoi s...
[Actualités]
Les Technos #476 : Episode du 8 janvier 2025
[Articles]
VOIN
[Articles]
Unit4 annonce le changement de CEO
[Articles]
River City Saga: Three Kingdoms Next
[Articles]
Flint : Treasure of Oblivion
[Articles]
5 prévisions de cyber-sécurité pour 2025 par ESET Research
[Articles]
The Exit Project: Backstreets
[Articles]
YIIK I.V
[Articles]
Star Wars : Dark Forces Remaster
[Articles]
Castlevania Dominus Collection
[Articles]
Smells Like a Mushroom
Actualités
Lettre d'information
Proposer une actualité
Archives
Actualités
Articles
Programmation
Press Release
Matériel
Logiciels
Livres
Interviews
Derniers commentaires
Jeux Vidéos
XBox One
XBox 360
Wii U
PSP
PS4
PS3
PC
DS
GameCube
3DS
Forum
Derniers messages
Informatique
Fun
Divers
Logithèque
Blogs
Divers
A Propos
Annonceurs
Contact
Recherche
RSS
Editer un article
Titre
Mots Clés
Texte
[size=18] [b]Nom[/b] [/size] msgop, msgrcv, msgsnd - Opérations sur les messages. [size=18] [b]Résumé[/b] [/size] .nf .B #include
[b][/b] .B #include
[b][/b] .B #include
.fi [b][i]int msgsnd (int msqid ,[/i][/b] [b][i]struct msgbuf * msgp ,[/i][/b] [b][i]size_t msgsz ,[/i][/b] [b][i]int msgflg );[/i][/b] [b][i]ssize msgrcv (int msqid ,[/i][/b] [b][i]struct msgbuf * msgp ,[/i][/b] [b][i]size_t msgsz ,[/i][/b] [b][i]long msgtyp ,[/i][/b] [b][i]int msgflg );[/i][/b] [size=18] [b]Description[/b] [/size] Pour envoyer ou recevoir un message, le processus appelant alloue une structure comme celle-ci : .nf struct msgbuf { long mtype; /* type de message ( > 0 ) */ char mtext[1]; /* contenu du message */ }; .fi avec une table [b]mtext[/b] de taille [b]msgsz ,[/b] valeur entière non-négative. Les message de taille nulle (sans champ [b]msgsz )[/b] sont autorisés. Le membre [b]mtype[/b] doit avoir une valeur strictement positive qui puisse être utilisée par le processus lecteur pour la sélection de messages (voir plus bas). Le processus doit avoir une permission d'écriture sur la file pour envoyer un message, et une permission de lecture pour en recevoir un. L'appel système [b]msgsnd[/b] insère une copie du message pointé par l'argument [i]msgp[/i] dans la file dont l'identificateur est indiqué par la valeur de l'argument [b]msqid .[/b] S'il y a assez de place dans la file, [b]msgsnd[/b] réussit immédiatement. (La capacité de la filer est définie par le champ [i]msg_bytes[/i] de la structure associée à la file de message. Durant la création de la file de champ est initialisé à [b]MSGMNB[/b] octets, mais cette limite peut être modifiée avec [b]msgctl ).[/b] S'il n'y a pas assez de place, alors le comportement par défaut de [b]msgsnd[/b] est de bloquer jusqu'à obtenir suffisament d'espace. En indiquant [b]IPC_NOWAIT[/b] le message ne sera pas envoyé et l'appel système échouera en retournant [b]EAGAIN[/b] dans [b]errno .[/b] Sinon, le processus sera suspendu jusqu'à ce que la condition de blocage soit levée (auquel cas le message sera envoyé et l'appel système réussira), ou que la file soit supprimée (auquel cas l'appel système échouera et [b]errno[/b] contiendra [b]EIDRM ),[/b] ou que le processus reçoive un signal à intercepter (auquel cas l'appel système échouera et [b]errno[/b] contiendra [b]EINTR ).[/b] [b]( msgsnd et msgrcv )[/b] ne sont jamais relancés automatiquement après interruption par un gestionnaire de signal, quelque soit la configuration de [b]SA_RESTART[/b] lors de l'installation du gestionnaire). Si l'appel réussit, la structure de file de messages sera mise à jour ainsi : [b]msg_lspid[/b] [table][row][col] [/col][col]contient le PID du processus appelant.[/col][/row][/table] [b]msg_qnum[/b] [table][row][col] [/col][col]est incrémenté de 1.[/col][/row][/table] [b]msg_stime[/b] [table][row][col] [/col][col]est rempli avec l'heure actuelle.[/col][/row][/table] l'appel système [b]msgrcv[/b] lit un message depuis la file indiquée par [i]msqid[/i] dans la structure [b]msgbuf[/b] pointée par l'argument [b]msgp ,[/b] en extrayant le message en cas de réussite. L'argument [i]msgsz[/i] indique la taille maximale en octets du membre [b]mtext[/b] de la structure pointée par l'argument [b]msgp .[/b] Si le contenu du message est plus long que [b]msgsz [/b] octets, et si l'argument [i]msgflg[/i] contient [b]MSG_NOERROR ,[/b] alors le message sera tronqué (et la partie tronquée sera perdue). Sinon le message ne sera pas extrait de la file, et l'appel système échouera en indiquant [b]E2BIG[/b] dans [b]errno[/b] L'argument [i]msgtyp[/i] indique le type de message désiré : [table][row][col] [/col][col]Si [i]msgtyp[/i] vaut [b]0 ,[/b] le premier message est lu.[/col][/row][/table] [table][row][col] [/col][col]Si [i]msgtyp[/i] est supérieur à [b]0 ,[/b] alors le premier message de type [i]msgtyp[/i] est extrait de la file. Si [i]msgflg[/i] contient [b]MSG_EXCEPT[/b] l'inverse est effectué, le premier message de type [b]différent[/b] de [i]msgtyp[/i] est extrait de la file.[/col][/row][/table] [table][row][col] [/col][col]Si [i]msgtyp[/i] est inférieur à [b]0 ,[/b] le premier message de la file avec un type inférieur ou égal à la valeur absolue de [i]msgtyp[/i] est extrait.[/col][/row][/table] L'argument [i]msgflg[/i] est composé d'un [i]OU[/i] binaire ( | ) avec les options suivantes : [b]IPC_NOWAIT[/b] [table][row][col] [/col][col]Si aucun message du type désiré n'est présent, l'appel système échoue et [b]errno[/b] est fixé à [b]ENOMSG.[/b][/col][/row][/table] [b]MSG_EXCEPT[/b] [table][row][col] [/col][col]Utilisé avec [i]msgtyp[/i] supérieur à [b]0[/b] pour lire les messages de type différent de [b]msgtyp.[/b][/col][/row][/table] [b]MSG_NOERROR[/b] [table][row][col] [/col][col]Tronque silencieusement les messages trop longs[/col][/row][/table] Si aucun message du type requis n'est disponible et si on n'a pas demandé [b]IPC_NOWAIT[/b] dans [b]msgflg ,[/b] Le processus appelant est bloqué jusqu'à l'occurrence d'un des évènements suivants. [table][row][col] [/col][col]Un message du type désiré arrive dans la file.[/col][/row][/table] [table][row][col] [/col][col]La file de messages est supprimée. L'appel système échoue et [b]errno[/b] contient [b]EIDRM.[/b][/col][/row][/table] [table][row][col] [/col][col]Le processus appelant reçoit un signal à intercepter. L'appel système échoue et [b]errno[/b] contient [b]EINTR.[/b][/col][/row][/table] Si l'appel système réussit, la structure décrivant la file de messages est mise à jour comme suit : [b]msg_lrpid[/b] [table][row][col] [/col][col]est rempli avec le PID du processus appelant.[/col][/row][/table] [b]msg_qnum[/b] [table][row][col] [/col][col]est décrémenté de 1[/col][/row][/table] [b]msg_rtime[/b] [table][row][col] [/col][col]est rempli avec l'heure actuelle.[/col][/row][/table] [size=18] [b]Valeur renvoyée[/b] [/size] En cas d'échec les deux appels systèmes renvoient [b]-1[/b] et [b]errno[/b] contient le code d'erreur. Sinon [b]msgsnd[/b] renvoie [b]0[/b] et [b]msgrvc[/b] renvoie le nombre d'octets copiés dans la table [b]mtext.[/b] [size=18] [b]Erreurs[/b] [/size] [b]msgsnd :[/b] [b]EAGAIN[/b] [table][row][col] [/col][col]Le message n'a pas pu être envoyé à cause de la limite [b]msg_qbytes[/b] pour la file et de la requête [b]IPC_NOWAIT[/b] dans [b]mgsflg.[/b][/col][/row][/table] [b]EACCES[/b] [table][row][col] [/col][col]le processus appelant n'a pas de permissions de lecture dans la file.[/col][/row][/table] [b]EFAULT[/b] [i]msgp[/i] [table][row][col] [/col][col]pointe en dehors de l'espace d'adressage accessible.[/col][/row][/table] [b]EIDRM[/b] [table][row][col] [/col][col]La file de message a été supprimée[/col][/row][/table] [b]EINTR[/b] [table][row][col] [/col][col]Un signal est arrivé avant d'avoir pu écrire quoi que ce soit.[/col][/row][/table] [b]EINVAL[/b] [i]msqid[/i] [table][row][col] [/col][col]ou [i]mtype[/i] ou [i]msgsz[/i] sont invalides.[/col][/row][/table] [b]ENOMEM[/b] [table][row][col] [/col][col]pas assez de mémoire pour le noyau.[/col][/row][/table] [b]msgrcv :[/b] [b]E2BIG[/b] [table][row][col] [/col][col]message trop long, et [b]MSG_NOERROR[/b] n'a pas été requis.[/col][/row][/table] [b]EACCES[/b] [table][row][col] [/col][col]Le processus appelant n'a pas de permission de lecture dans la file.[/col][/row][/table] [b]EFAULT[/b] [i]msgp[/i] [table][row][col] [/col][col]pointe en dehors de l'espace d'adressage accessible.[/col][/row][/table] [b]EIDRM[/b] [table][row][col] [/col][col]La file de messages a été supprimée.[/col][/row][/table] [b]EINTR[/b] [table][row][col] [/col][col]Un signal est arrivé avant d'avoir pu lire quoi que ce soit.[/col][/row][/table] [b]EINVAL[/b] [i]msgqid[/i] [table][row][col] [/col][col]ou [i]msgsz[/i] invalides.[/col][/row][/table] [b]ENOMSG[/b] [b]IPC_NOWAIT[/b] [table][row][col] [/col][col]a été requis et aucun message du type réclamé n'existe dans la file.[/col][/row][/table] [size=18] [b]Notes[/b] [/size] Les limites systèmes suivantes influent sur [b]msgsnd :[/b] [b]MSGMAX[/b] [table][row][col] [/col][col]Taille maximum d'un message : l'implémentation Linux 0.99.13 fixe cette limite à 4080 octets.[/col][/row][/table] [b]MSGMNB[/b] [table][row][col] [/col][col]Taille maximale d'une file de messages. Peut être augmentée par le Super-User.[/col][/row][/table] [size=18] [b]Conformité[/b] [/size] SVr4, SVID. [size=18] [b]Notes[/b] [/size] L'argument pointeur est déclaré comme un [i]struct[/i] msgbuf * avec les bibliothèques libc4, libc5, glibc 2.0, glibc 2.1. Il est déclaré comme un [i]void[/i] * ([i]const[/i] void * pour [i]msgsnd()[/i]) avec la bibliothèque glibc 2.2, suivant ainsi les spécifications SUSv2. [size=18] [b]Voir aussi[/b] [/size] [b]ipc (5),[/b] [b]msgctl (2),[/b] [b]msgget (2),[/b] [b]msgrcv (2),[/b] [b]msgsnd (2).[/b] [size=18] [b]Traduction[/b] [/size] Christophe Blaess, 1996-2003.
Fichier
Forum
-
Derniers messages
Bavardages
Aujourd'hui, je rénove ou je construis ^^
Software
problème sur windows 10
Réseaux et Télécom
Administrateur Réseau - Cisco
Réseaux et Télécom
Problème wifi (POE)
Software
Postfix - Need help
Bavardages
Oh râge oh désespoir !
Programmation
Enregistrement client et envoi mail
Software
SÉCURITÉ MACBOOK
Hardware
conseil matos réseau?
Hardware
nVidia Shield Android TV
Actualités
-
Archives
Jeux Vidéos
Flight Simulator et Halo arriveraient sur Switch 2 et PS5
Jeux Vidéos
Xbox annonce un Developer_Direct le 23 janvier
Jeux Vidéos
Test VOIN (PC) - Un hack'n slash à la troisième personne réalisé par un développeur solo
Social
Voici comment créer des chatbots IA sur WhatsApp
Mobile
Samsung prépare un abonnement pour les smartphones Galaxy : l'IA est exclue pour l'instant, mais qui sait pour combien de temps...
Ada
CSS
Cobol
CPP
HTML
Fortran
Java
JavaScript
Pascal
Perl
PHP
Python
SQL
VB
XML
Anon URL
DailyMotion
eBay
Flickr
FLV
Google Video
Google Maps
Metacafe
MP3
SeeqPod
Veoh
Yahoo Video
YouTube
6px
8px
10px
12px
14px
16px
18px
Informaticien.be
- © 2002-2025
Akretio
SPRL - Generated via
Kelare
The Akretio Network:
Akretio
-
Freedelity
-
KelCommerce
-
Votre publicité sur informaticien.be ?