Как установить максимальный размер FIFO в C?

#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 откроется.