Se connecter
Se connecter
Inscription
Mot de passe perdu
Connexion:
[Actualités]
Le lancement de la Nintendo Switch 2 serait prévu pour mars 2025
[Actualités]
Enfin Google Agenda et Tasks ne font plus qu'un : ce qui change sur Android
[Actualités]
Google Gemini est de plus en plus puissant et avec Android 16, il deviendra l'as...
[Actualités]
Les nouveaux symboles WhatsApp : ce qu'ils signifient et qui les recevra
[Actualités]
Fini Alt+Tab : Microsoft propose la superposition de navigateur Edge pour les jo...
[Actualités]
Test I*CHU: Chibi Edition (Nintendo Switch) - Devenez une légende de la product...
[Actualités]
Changer de téléphone sera beaucoup plus simple avec cette innovation Android
[Actualités]
Selon Bloomberg, Sony travaille sur une PlayStation 5 portable
[Actualités]
Nvidia prévient d'une pénurie de GPU ce trimestre, avec une reprise début 2025
[Actualités]
Les Technos #469 : Un jour sans fin
[Articles]
Dungeons 4 - Nintendo Switch Edition
[Articles]
The Bridge Curse 2 : The Extrication
[Articles]
Farmagia
[Articles]
I*CHU: Chibi Edition
[Articles]
Farming Simulator 25
[Articles]
Goblin Slayer -Another Adventurer- Nightmare Feast
[Articles]
Deel lance des programmes en marque blanche et pour les revendeurs pour plus de ...
[Articles]
ESET Research : WolfsBane, nouvelle porte dérobée de cyber-espionnage Linux cr...
[Articles]
Devoteam présente son nouveau plan stratégique « AMPLIFY » avec un fort acce...
[Articles]
LEGO Horizon Adventures
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
Consoles
Le lancement de la Nintendo Switch 2 serait prévu pour mars 2025
Google
Enfin Google Agenda et Tasks ne font plus qu'un : ce qui change sur Android
Google
Google Gemini est de plus en plus puissant et avec Android 16, il deviendra l'assistant définitif
Social
Les nouveaux symboles WhatsApp : ce qu'ils signifient et qui les recevra
Navigateurs
Fini Alt+Tab : Microsoft propose la superposition de navigateur Edge pour les joueurs
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-2024
Akretio
SPRL - Generated via
Kelare
The Akretio Network:
Akretio
-
Freedelity
-
KelCommerce
-
Votre publicité sur informaticien.be ?