Я столкнулся с проблемой при попытке отправить данные по каналам, если быть более точным: я не получаю ненулевые файловые дескрипторы для канала.
Вот код для создания трубы:
//PIPE is defined as a "/tmp/my.fifo"
umask(0);
...
mknod(PIPE,S_IFIFO,0);
...
p=fopen(PIPE,"w");
if (p)
{
//fprintf(p,"some message");
fclose(p);
}
else
printf("Could not open the pipe\n");
Вот код для чтения с канала:
cos_pipe = fopen(PIPE,"r");
if (cos_pipe)
{
fgets(buffer,80,cos_pipe);
...
fclose(cos_pipe);
}
else
{
printf("Couldn't open the pipe\n");
usleep(300000);
}
Код скомпилирован в два разных пакета, которые я запускаю отдельно. Все, что я получаю, это "Не удалось открыть трубу".
В некотором родственном примечании: должна ли программа, которая создала канал, удалить его позже?