LinuxForum.Fans
Тема

не читается информацию из FIFO

Автор: trung_bui 4 сообщений 910 просмотров
19.05.2017 13:21 #423131

Написать две разные программы, одна из которых пишет информацию в FIFO, а вторая - читает из него. Ни одна из программ никак не связана с другой

text

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>

int main() { int fd; size_t size; char name[]="aaa.fifo";

umask(0); if(mknod(name, S_IFIFO | 0666, 0) < 0) { if (unlink(name)==-1) { printf("Can\'t create FIFO\n"); exit(-1); } mknod(name, S_IFIFO | 0666, 0); } if ((fd = open(name, O_WRONLY)) < 0) { printf("Can\'t open FIFO for writing\n"); exit(-1); } size = write(fd, "Hello, world!", 14); if (size != 14) { printf("Can\'t write all string to FIFO\n"); exit(-1); } close(fd); return 0; }

text

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>

int main() { int fd; size_t size; char resstring[14]; char name[]="aaa.fifo"; if ((fd = open(name, O_RDONLY)) < 0) { printf("Can\'t open FIFO for reading\n"); exit(-1); } size = read(fd, resstring, 14); if(size < 0) { printf("Can\'t read string\n"); exit(-1); } printf("%s\n",resstring); close(fd); return 0; }

Ну я записывал в первый проге информацию,но почему из второй прог не читается из него

Подскажите,пжлс

19.05.2017 13:31 #423132

Лабораторные работы по программированию? ;)

Программы должны работать одновременно? Предполагаю, хотя могу и ошибаться, что при одновременной работе вначале данные где-то кешируются, а пишутся уже при вызове close().

19.05.2017 15:40 #423135

printf работает через буфер. В программе приемнике для вывода используйте

text

fprintf (stderr, "%s \n", resstring);

Также канал лучше создавать в программе приемнике, но это уже мелочи.
При чтении файла используйте

text

if(size <= 0)
19.05.2017 19:53 #423151

спс большое=))
я немного затупился
не ту прог откпомпилиров :D :D =))

Войдите или зарегистрируйтесь, чтобы ответить.