출처 : http://stackoverflow.com/questions/4624071/pipe-buffer-size-is-4k-or-64k


ulimit -a를 하면 


$ ulimit -a

core file size          (blocks, -c) 0

data seg size           (kbytes, -d) unlimited

scheduling priority             (-e) 0

file size               (blocks, -f) unlimited

pending signals                 (-i) 15923

max locked memory       (kbytes, -l) 64

max memory size         (kbytes, -m) unlimited

open files                      (-n) 1024

pipe size            (512 bytes, -p) 8 // 8 * 512B = 4kB

POSIX message queues     (bytes, -q) 819200

real-time priority              (-r) 0

stack size              (kbytes, -s) 10240

cpu time               (seconds, -t) unlimited

max user processes              (-u) 1024

virtual memory          (kbytes, -v) unlimited

file locks                      (-x) unlimited



이렇게 나오는데


자기가 한바이트씩 쓰는거를 만들어 봤더니 






$ ./test_buf_pipe 

Tube Creation

Theoretical max size: 4096

Writing in pipe

1 bytes written

2 bytes written

3 bytes written

4 bytes written

[...]

65535 bytes written

[blocks here]


64k 이거밖에 못쓰더라 


PIPE_BUF 는 뭐냐?



그러니까 답글에 


PIPE_BUF 는 한방에 쓸수 있는 양이다. 4096 이니까 한방에 4K씩 쓸수 있다는 거다.

http://pubs.opengroup.org/onlinepubs/9699919799/functions/write.html


그 아래 답글에


As of Linux 2.6.35 you can use fcntl(2) with the F_SETPIPE_SZ operation to set the pipe buffer up to /proc/sys/fs/pipe-max-size. This is by default 1 MB; see proc(5).



$ cat /proc/sys/fs/pipe-max-size 하면 pipe 용량이 나옴 이라고 했다.

해보면 


1048576 나오고 1M 버퍼가 잡혀 있는것을 알 수 있다.

'C & C++ 관련' 카테고리의 다른 글

Protocol Buffers  (0) 2019.11.08
About pipe buffer size. 파이프 버퍼 싸이즈 fifo pipe  (0) 2014.03.28
Socket programming in C using http post  (0) 2013.12.03
File open  (0) 2012.11.02
Posted by Real_G

댓글을 달아 주세요