Программа должна принимать ipcs сообщения.
Ниже представлен участок кода, отвечающий
за создание новой очереди с пом. msgget
и принятие сообщения с пом. msgrcv
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <errno.h>
struct msgform
{
long mtype;
char mtext[10];
}msg,msg2;
int msgid;
int main()
{
int i,pid,*pint;
key_t key=ftok("./msg_server.c",1);
msgid=msgget(key,IPC_CREAT );
//printf(strerror(errno));
printf("msgid= %d\n",msgid);
{
int rcv_id=msgrcv(msgid,&msg,sizeof(msg.mtext),1,0);
printf(strerror(errno));
printf("\nrcv_id=%d\n",rcv_id);
char cmd[50];
strcpy(cmd,"echo");
strcat(cmd," ");
strcat(cmd,msg.mtext);
system(cmd);
}
return 0;
}
}
Когда прога выполняется под root, все работает так как надо.
Когда же я выполняю прогу под дкугим пользователем (lamer),
прога выдает результат.
msgid= 98307
Permission denied
rcv_id=-1
Т.е. как я понял создает очередь, но не читает из нее.
Комманда ipcs выполненная под root выдает:
----- Message Queues --------
key msqid owner perms used-bytes messages
0x0105cd28 0 root 644 0 0
0x0105cd17 32769 root 0 0 0
0x0105cd33 65538 lamer 0 0 0
0x0105cd29 98307 lamer 0 0 0
А если выполнить ipcs под lamer:
key msqid owner perms used-bytes messages
0x0105cd28 0 root 644 0 0
В общем, как я понял на очереди сообщения налагаются определенные права доступа. Но ведь lamer создал сообщение ! Он его владелец !
Почему он не может получать елементы очереди ? Что нужно сделать, чтобы lamer мог получать их ?
Объяаните мне люди умные, плиз.
![](/photos/5360:-787959355.png)
Ответ на:
комментарий
от ananas
![](/img/p.gif)
Ответ на:
комментарий
от constant_arapov
![](/photos/13958:-361645714.jpg)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум ipc+system=мистика ? (2005)
- Форум ftok+msgget (2005)
- Форум Не отправляется сообщение через Message Queue (IPC) (2011)
- Форум Семафоры, не правильное отображение строки , язык си (2012)
- Форум передача списка процессов сервера клиенту (2015)
- Форум Долго отрабатывает программа (2018)
- Форум формат DNS пакета (2004)
- Форум V4L2: ошибка удаления буфера из очереди: недопустимый аргумент (2023)
- Форум Segmentation fault (C & Mysql) (2007)
- Форум Определение серийного номера HDD (2004)