Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[FIFO] баг open?

55K
17 декабря 2009 года
blaster_master
1 / / 17.12.2009
Привет, собственно сабж
Две программы клиент и сервер взаимодействуют через именованный канал. Сервер создает канал, потом к нему подключается клиент.

На сервере

 
Код:
mkfifo("fifo", S_IFIFO | 0666);
    if ((fifo = open("fifo",O_RDONLY)) == -1)
        printf("errno %d", errno);
    perror(0);
    printf("server fifo id = %d\n",fifo);


На клиенте

 
Код:
if ((fifo = open("fifo",O_RDWR)) == -1)
        printf("errno %d", errno);
    perror(0);
    printf("client fifo id = %d\n",fifo);


На сервере дескриптору fifo присваивается значение 3, а на клиенте <!!!> 0. То есть фактически дескриптор fifo отождествляется с дескриптором стандартного потока вывода. И как следствие когда я на клиенте пишу что-нибудь в него типа
write(fifo,&num,sizeof(int))
то получаю мгновенный вывод на экран (причем не num, а всякие сторонние символы). Ну и соответственно сервер не может ничего прочитать. Подскажите в чем проблема, заранее спасибо.
502
17 декабря 2009 года
Jail
550 / / 30.01.2007
FIFo для приложения клиент-сервер??? вы ничего не перепутали?
FIFO в основном используется для взаимодействия процессов уровня пользователя или процессов уровня ядра.
поглядите в сторону socket или, что намного и намного лучше RPC.
С RPC могу привести пример. с сокетами уже приводился.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог