Запись и чтение чисел из програмного канала pipe

Рейтинг: 0Ответов: 1Опубликовано: 23.04.2015

Нужно записать в канал три числа, а затем считать их и вывести на экран. Что то типа:

#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
int main()
{
int fd[2], result;
size_t size;
double a=1.3,b=2.4,c=555555;
double resstring[3];
pipe(fd);
write(fd[1], b, 1);
size = read(fd[0], resstring, 1);
printf("%d\n",resstring[0]);

Только не работает пример вовсе. Как это сделать?

Ответы

▲ 2Принят

Вы неправильно используете write/read. В write нужно передавать указатель, и правильно указать ее размер. Ваши переменные имеют тип double, их размер не равен 1. То же самое и с read. write(fd[1], &b, sizeof(double)) Чтобы вывести на экран переменную типа double нужно использовать модификатор %lf.

#include <sys/types.h>                                                                                        
#include <unistd.h>                                                                                           
#include <stdio.h>                                                                                            
int main()                                                                                                    
{                                                                                                             
    int fd[2], result;                                                                                        
    size_t size;                                                                                              
    double a=1.3,b=2.4,c=555555;                                                                              
    double resstring[3];                                                                                      
    pipe(fd);                                                                                                 
    write(fd[1], &b, sizeof(double));                                                                         
    size = read(fd[0], resstring, sizeof(double));                                                            
    printf("%lf\n",resstring[0]);                                                                             
}