Movatterモバイル変換


[0]ホーム

URL:


man7.org > Linux >man-pages

Linux/UNIX system programming training


mq_getattr(3) — Linux manual page

NAME |LIBRARY |SYNOPSIS |DESCRIPTION |RETURN VALUE |ERRORS |ATTRIBUTES |VERSIONS |STANDARDS |HISTORY |EXAMPLES |SEE ALSO |COLOPHON

mq_getattr(3)            Library Functions Manualmq_getattr(3)

NAME        top

       mq_getattr, mq_setattr - get/set message queue attributes

LIBRARY        top

       Real-time library (librt,-lrt)

SYNOPSIS        top

#include <mqueue.h>int mq_getattr(mqd_tmqdes, struct mq_attr *attr);int mq_setattr(mqd_tmqdes, const struct mq_attr *restrictnewattr,struct mq_attr *restrictoldattr);

DESCRIPTION        top

mq_getattr() andmq_setattr() respectively retrieve and modify       attributes of the message queue referred to by the message queue       descriptormqdes.mq_getattr() returns anmq_attr structure in the buffer pointed byattr.  This structure is defined as:           struct mq_attr {               long mq_flags;       /* Flags: 0 or O_NONBLOCK */               long mq_maxmsg;      /* Max. # of messages on queue */               long mq_msgsize;     /* Max. message size (bytes) */               long mq_curmsgs;     /* # of messages currently in queue */           };       Themq_flags field contains flags associated with the open message       queue description.  This field is initialized when the queue is       created bymq_open(3).  The only flag that can appear in this       field isO_NONBLOCK.       Themq_maxmsg andmq_msgsize fields are set when the message queue       is created bymq_open(3).  Themq_maxmsg field is an upper limit       on the number of messages that may be placed on the queue usingmq_send(3).  Themq_msgsize field is an upper limit on the size of       messages that may be placed on the queue.  Both of these fields       must have a value greater than zero.  Two/proc files that place       ceilings on the values for these fields are described inmq_overview(7).       Themq_curmsgs field returns the number of messages currently held       in the queue.mq_setattr() sets message queue attributes using information       supplied in themq_attr structure pointed to bynewattr.  The only       attribute that can be modified is the setting of theO_NONBLOCK       flag inmq_flags.  The other fields innewattr are ignored.  If       theoldattr field is not NULL, then the buffer that it points to       is used to return anmq_attr structure that contains the same       information that is returned bymq_getattr().

RETURN VALUE        top

       On successmq_getattr() andmq_setattr() return 0; on error, -1 is       returned, witherrno set to indicate the error.

ERRORS        top

EBADFThe message queue descriptor specified inmqdes is invalid.EINVALnewattr->mq_flags contained set bits other thanO_NONBLOCK.

ATTRIBUTES        top

       For an explanation of the terms used in this section, seeattributes(7).       ┌──────────────────────────────────────┬───────────────┬─────────┐       │InterfaceAttributeValue│       ├──────────────────────────────────────┼───────────────┼─────────┤       │mq_getattr(),mq_setattr()           │ Thread safety │ MT-Safe │       └──────────────────────────────────────┴───────────────┴─────────┘

VERSIONS        top

       On Linux,mq_getattr() andmq_setattr() are library functions       layered on top of themq_getsetattr(2) system call.

STANDARDS        top

       POSIX.1-2008.

HISTORY        top

       POSIX.1-2001.

EXAMPLES        top

       The program below can be used to show the defaultmq_maxmsg andmq_msgsize values that are assigned to a message queue that is       created with a call tomq_open(3) in which theattr argument is       NULL.  Here is an example run of the program:           $./a.out /testq;           Maximum # of messages on queue:   10           Maximum message size:             8192       Since Linux 3.5, the following/proc files (described inmq_overview(7)) can be used to control the defaults:           $uname -sr;           Linux 3.8.0           $cat /proc/sys/fs/mqueue/msg_default;           10           $cat /proc/sys/fs/mqueue/msgsize_default;           8192Program source       #include <fcntl.h>       #include <mqueue.h>       #include <stdio.h>       #include <stdlib.h>       #include <sys/stat.h>       #include <unistd.h>       #define errExit(msg)    do { perror(msg); exit(EXIT_FAILURE); \                               } while (0)       int       main(int argc, char *argv[])       {           mqd_t mqd;           struct mq_attr attr;           if (argc != 2) {               fprintf(stderr, "Usage: %s mq-name\n", argv[0]);               exit(EXIT_FAILURE);           }           mqd = mq_open(argv[1], O_CREAT | O_EXCL, 0600, NULL);           if (mqd == (mqd_t) -1)               errExit("mq_open");           if (mq_getattr(mqd, &attr) == -1)               errExit("mq_getattr");           printf("Maximum # of messages on queue:   %ld\n", attr.mq_maxmsg);           printf("Maximum message size:             %ld\n", attr.mq_msgsize);           if (mq_unlink(argv[1]) == -1)               errExit("mq_unlink");           exit(EXIT_SUCCESS);       }

SEE ALSO        top

mq_close(3),mq_notify(3),mq_open(3),mq_receive(3),mq_send(3),mq_unlink(3),mq_overview(7)

COLOPHON        top

       This page is part of theman-pages (Linux kernel and C library       user-space interface documentation) project.  Information about       the project can be found at        ⟨https://www.kernel.org/doc/man-pages/⟩.  If you have a bug report       for this manual page, see       ⟨https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/tree/CONTRIBUTING⟩.       This page was obtained from the tarball man-pages-6.15.tar.gz       fetched from       ⟨https://mirrors.edge.kernel.org/pub/linux/docs/man-pages/⟩ on       2025-08-11.  If you discover any rendering problems in this HTML       version of the page, or you believe there is a better or more up-       to-date source for the page, or you have corrections or       improvements to the information in this COLOPHON (which isnot       part of the original manual page), send a mail to       man-pages@man7.orgLinux man-pages 6.15            2025-05-17mq_getattr(3)

Pages that refer to this page:mq_getsetattr(2)mq_close(3)mq_notify(3)mq_open(3)mq_receive(3)mq_send(3)mq_unlink(3)systemd.socket(5)mq_overview(7)



HTML rendering created 2025-09-06 byMichael Kerrisk, author ofThe Linux Programming Interface.

For details of in-depthLinux/UNIX system programming training courses that I teach, lookhere.

Hosting byjambit GmbH.

Cover of TLPI


[8]ページ先頭

©2009-2025 Movatter.jp