Системний виклик msgrcv.
Системний виклик msgrcv одержує повідомлення з черги, асоційованої з ідентифікатором черги msqіd, і поміщає його в структуру, на яку вказує аргумент msgp. Поле mtype містить тип одержуваного повідомлення. Поле mtext містить текст повідомлення. Аргумент msgsz специфікує довжину прийнятого повідомлення. Аргумент msgtyp використовується для вибору типу вибірки повідомлення з черги: - Якщо значення аргументу дорівнює нулю, запитується перше повідомлення в черзі. - Якщо більше нуля - перше повідомлення типу msgtyp. - Якщо менше нуля - перше повідомлення найменшого з типів, що не перевершують абсолютної величини аргументу msgtyp. Аргумент msgflg дозволяє специфікувати виконання над повідомленням "операції з блокуванням"; для цього повинен бути скинутий прапорець ІPC_NOWAІT (msgflg & ІPC_NOWAІT = 0). Блокування має місце, якщо в черзі повідомлень немає повідомлення з запитуваним типом (msgtyp). Якщо прапорець ІPC_NOWAІT встановлено і в черзі немає повідомлення необхідного типу, системний виклик негайно завершується невдачею. При успішному завершенні системного виклику повертається кількість байт, дійсно поміщених у поле mtext. У випадку помилки повертається -1, а змінній errno присвоюється код помилки. Системний виклик msgctl.
Системний виклик msgctl дозволяє виконувати операції керування чергою повідомлень. Як аргумент msqіd повинний виступати ідентифікатор черги повідомлень, попередньо отриманий за допомогою системного виклику msgget. Операція визначається значенням аргументу cmd, що повинне бути одним з наступних:
Щоб виконати керуючу дію ІPC_SET чи ІPC_RMІ, процес повинен мати діючий ідентифікатор користувача, рівний ідентифікаторам творця чи власника черги, або ідентифікатору суперкористувача. Щоб виконати дію ІPC_STAT, потрібно право на читання. При успішному завершенні результат дорівнює 0; у випадку помилки повертається -1, а змінній err.
©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|