Доброго времени суток! Необходимо реализовать курсач с процессами, которые обмениваются данными через конвеер, FIFO,разделяемую память и прочее. С-но, работа и так объемная и хотелось бы часть кода вынести в функции. В связи с этим задумался о том, как бы сделать функции записи-чтения из pipe. Пока надумал вот что:
void init_pipe()// создаем конвеер
{
if(pipe(fd)<0)
{
fprintf(stderr, "Ошибка создания конвеера! \n");
exit(0);
}
else
{
fprintf(stderr, "Конвеер успешно создан! \n");
}
}
void save_pipe(char *info)
{
close(fd[0]);
int size = write(fd[1], info, strlen(info));
close(fd[1]);
}
char* load_pipe()
{
close(fd[1]);
char buffer[ELEMENT_SIZE];
char *temp;
read(fd[0], buffer, ELEMENT_SIZE);
strcpy(temp, buffer);
close(fd[0]);
return temp;
}
пытаюсь это дело заставить так:
init_pipe();
save_pipe("234");
printf("%s", load_pipe());
Однако мне выдается ошибка сегментирования ядра. Понимаю, что тема скорее всего ламерская, однако раньше никогда не занимался такими вещами и всегда предпочитал высокоуровневые функции. Может кто подскажет, как сделать задуманное, или хотя-бы уменьшить объем кода, чтобы не пришлось каждый раз закрывать файлы, записывать-считывать данные, проверять правильно ли они записаны-считаны через значение, возвращаемое read-write, и т.п.
Буду очень благодарен за помощь