#c #linux #fifo #systems-programming #mkfifo
#c #linux #fifo #системы-программирование #mkfifo
Вопрос:
Я создаю именованный канал с помощью mkfifo(2) . Но я хочу установить его максимальный размер. Я использую fnctl() и PIPE_BUF, но я думаю, что не смог бы этого сделать.
Это мой фрагмент кода:
#define PIPE_BUF 1048576
#define _GNU_SOURCE
int writeSomeStuffToFifo (){
int fd;
mkfifo(myfifo, 0666);
fcntl(F_SETPIPE_SZ,PIPE_BUF);
fd = open(myfifo, O_WRONLY);
write(fd,"1",strlen("1"));
close(fd);
}
Комментарии:
1. но я думаю, что не смог бы этого сделать — почему вы так думаете?
2. @EugeneSh. beacuse, он блокируется, когда я что-то записываю в FIFO.
3.
fcntl
следует использовать файловый дескриптор.4. @EugeneSh. верен ли второй аргумент?
5.
fcntl(fd,F_SETPIPE_SZ, PIPE_BUF )
. Конечно, после того, какfd
откроется.