Uncle Theodore
написал 21 февраля 2005 года в 01:30 (1096 просмотров)
Ведет себя
неопределенно; открыл 58 тем в форуме, оставил 1537 комментариев на сайте.
#include #include #include #include #include #include #include #include #include #include int main(int argc, char **argv) { key_t ipc_key; int mess_id; int i; struct mymsgbuf //user-defined structure for messages { long mtype; int mtext; } msg; //obtain a key if((ipc_key = ftok(".", 1)) == -1) { printf("Error key generating!\n"); return -1; }; //create a message queue if((mess_id = msgget(ipc_key, IPC_CREAT|0660)==-1)) { printf("Unable to get a message queue!\n"); return -1; }; //fork a new process if(fork()) //parent { msg.mtype = 4; //parent sends message of type 4 msg.mtext = getpid(); if((msgsnd(mess_id, &msg, sizeof(int), 0))==-1) perror("PARENT: Writing to a message queue failed: "); for(i=0;i<5;i++) { if((msgrcv(mess_id, &msg, sizeof(int),2,0)) != -1) //parent waits for messages of type 2 printf("PARENT: received a message from process %i\n", msg.mtext); msgsnd(mess_id, &msg, sizeof(int), 0); }; } else //child { msg.mtype = 2; //child sends messages of type 2 msg.mtext = getpid(); if((msgsnd(mess_id, &msg, sizeof(int), 0))==-1) perror("CHILD: Writing to a message queue failed: "); for(i=0;i<5;i++) { if((msgrcv(mess_id, &msg, sizeof(int),4,0)) != -1) //child waits for messages of type 2 printf("CHILD: received a message from process %i\n", msg.mtext); msgsnd(mess_id, &msg, sizeof(int), 0); }; }; wait(NULL); msgctl(mess_id, IPC_RMID, NULL); //delete the message queue return 0; };
выдает:
CHILD: Writing to a message queue failed: : Identifier removed
PARENT: Writing to a message queue failed: : Identifier removed
Причем, ipcs выдает, что у меня появляется message queue с каким-то номером, которую надо убивать. Спасите остатки волос у меня на голове, объясните, чтО происходит?!!1
Good Luck,
UT
ПЫ-СЫ: пытался создавать queues в процессах (отдельно для папки и сосунка). Результат — тот же. Какого волосатого этот identifier removed?!
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
символически подчистив текст (ммм.. «};» — сильнО)
Не понял, как именно ты его почистил?!
Кстати, ты знаешь, у меня mplayer отказывается работать в shm моде. Говорит, апшипка… Я так думаю, надо бы перезапуститься, похоже, засрал я память чем-то неудобоваримым…
Good Luck,
UT
trailing spaces поудалял
«;» апосля «}» тоже…
скомпилировал и запустил…
как именно это? ;)
ну, в смысле, как именно пускаешь и что именно оно тебе отвечает?
хотя, это надо в другой теме и другой ветке, я так думаю… ;)
кстати…
а вот повторный запуск выдаёт:
видимо, на моменте создания/удаления происходит что-то не так:
если изменить немного код:
то выполнение завершается с:
поэтому, что-то неправильно при создании или удалении очереди.
кстати, может её сделать для этого примера IPC_PRIVATE?
хотя, один фиг, теперь только перезагрузкой спасаться… :(
<font size=«-2»>добавлено позднее</font>
тоже ругается
Нет, перезагрузка необязательна (наверное). Можно воспользоваться командой
ipcs и ipcrm
А mplayer не может создать shared memory segment…
Спасибо, я еще ковыряюсь…
Good Luck,
UT
ага, помогло :) спасиба.
кстати, после этого оно уже больше не работает…
кстати, повторные запуски почему-то возвращают……