Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> msgsnd Invalid argument 
V
    Опции темы
Anark1
Дата 17.12.2009, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 622
Регистрация: 15.12.2006
Где: RF -> Moscow

Репутация: нет
Всего: 11



Здравствуйте, 
имеется две программы - клиент и сервер, подзадача - отправка клиентом сообщений серверу, при попытке отправки получаю ошибку 22 Invalid argument
код клиента ниже, соединение с очередью корректно.
Также стоит заметить что пишу под XP с Cygwin. 

Код

typedef struct msg_first_buf
{
        long type;
        int params[3];
} msg_first_buf;
...
msg_first_buf msg_first;
...
key = ftok("server.c",'y');
msid = msgget(key, 0666);
...
scanf("%d %d %d",&(msg_first.params[0]),&(msg_first.params[1]),&(msg_first.params[2]));
msg_first.type = MSG_FIRST;
if (msgsnd(msid,(msg_first_buf*)(&msg_first),sizeof(int)*3,IPC_NOWAIT)==-1)
        printf("errno %d\n",errno);
perror(0);


Вообще в man'e написана другая структура, но я так понимаю главное - наличие типа long в начале структуры. 
Константа MSG_FIRST описана в заголовке. Как только не менял структуру сообщения - никак. Подскажите что делаю не так.

Это сообщение отредактировал(а) Anark1 - 17.12.2009, 14:39


--------------------
Enjoy yourself, still you can...;)

user posted image

user posted image
PM MAIL ICQ   Вверх
bsa
Дата 17.12.2009, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 16
Всего: 196



Я не знаю, что за MSG_FIRST ты используешь (у меня ни в одном стандартном хидере такого нет), может он отрицательный? Попробуй вместо него использовать что-то заведомо положительное.
PM   Вверх
GrayCardinal
Дата 17.12.2009, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 8
Всего: 58



Цитата

Вообще в man'e написана другая структура, но я так понимаю главное - наличие типа long в начале структуры.

Вы тут явно не правы  smile 


--------------------
PM MAIL WWW   Вверх
svlary
Дата 18.12.2009, 06:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 8.9.2009

Репутация: 4
Всего: 4



Цитата(GrayCardinal @  17.12.2009,  19:15 Найти цитируемый пост)
Вы тут явно не правы

   В данном случае НЕ правы все-таки Вы. И ф-ция msgsnd и функция msgrcv вторым параметром (буфер сообщения) имеют void *msgbuf. Единственное, что требуют соглашения System V  - что бы в начале этого буфера было место под long mtype.
Цитата
получаю ошибку 22 Invalid argument

  Глядя на Ваш исходный код, могу предположить, что единственный аргумент, который может быть НЕправильным (т.е. может иметь НЕправильное значение!) - это msid вот тут :
Код

msgsnd(msid,...):

  И сразу вопрос - а Вы проверяете его значение ? В смысле, после вызова  
Код

msid = msgget(key, 0666);

Анализируете результат ? Здесь Вы не пытаетесь создать очередь. Значит - она уже должна существовать.
А что говорит команда "ipcs -q" ?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0410 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.