Я новичок в программировании каналов и сокетов и сделал попытку создания простой программы, которая использует именованные каналы.
Код (который имеет отношение к рассматриваемому вопросу) приведен ниже:
getcwd(cwd, sizeof(cwd));
char * pipename = malloc(PIPENAME_SIZE * sizeof(char));
strcat(pipename, cwd);
strcat(pipename, ".pipe");
unlink(pipename);
if (mkfifo(pipename, 0644) == -1) {
fprintf(stderr, "Error creating FIFO.\n");
exit(EXIT_FAILURE);
}
printf("I'm here\n");
fflush(stdin);
int fd_receive = open(pipename, O_RDONLY);
printf("And now I'm here\n");
fflush(stdin);
Когда я запускаю программу, вывод
I'm here
Почему он застревает при открытии файла?Это вопрос разрешений?Я огляделся и не смог найти никого с такой же проблемой, поэтому думаю, что это деталь, по которой пропустил бы такой я, как я.
Заранее спасибо.