Se connecter
Se connecter
Inscription
Mot de passe perdu
Connexion:
[Actualités]
Test Graven (PS5)
[Actualités]
YouTube en pourparlers avec des labels sur les outils d'IA
[Actualités]
Mauvais résultats de ventes pour les jeux triple-a sur iOS
[Actualités]
YouTube Premium annonce de nombreuses nouvelles fonctionnalités, également à ...
[Actualités]
OpenAI a construit un modèle d'IA pour « critiquer » ChatGPT
[Actualités]
Concord, Sony a annoncé les dates et le contenu de la bêta sur PS5 et PC
[Actualités]
WhatsApp aide les groupes à mieux s'organiser : les événements sont accessibl...
[Actualités]
Les Technos #453 : Julian Assange : l'épilogue d'une saga ?
[Actualités]
Amazon va lancer une "section chinoise" dans sa boutique en ligne
[Actualités]
Google Translate accueille 110 nouvelles langues, avec un regard attentif sur l'...
[Articles]
Graven
[Articles]
Palo Alto Networks met en garde contre la cybercriminalité avant et pendant les...
[Articles]
ESET Threat Report: des voleurs d'informations utilisent l'IA et des maliciels b...
[Articles]
Killer Klowns from Outer Space : The Game
[Articles]
Madison VR
[Articles]
F1 24
[Articles]
Les Schtroumpfs - Village Party
[Articles]
Eternal Threads
[Articles]
Rocket Knight Adventures : Re-Sparked !
[Articles]
Retropolis 2 : Never Say Goodbye
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 ^^
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
Software
Transformer de l'audio en texte
Actualités
-
Archives
Jeux Vidéos
Test Graven (PS5)
Musique
YouTube en pourparlers avec des labels sur les outils d'IA
iOS
Mauvais résultats de ventes pour les jeux triple-a sur iOS
Vidéo
YouTube Premium annonce de nombreuses nouvelles fonctionnalités, également à saveur d'IA
Programmation
OpenAI a construit un modèle d'IA pour « critiquer » ChatGPT
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 ?