About pipe buffer size. 파이프 버퍼 싸이즈 fifo pipe
출처 : 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++ 관련' 카테고리의 다른 글
file open close socket send / file copy~~~ example (0) | 2016.02.15 |
---|---|
Socket programming in C using http post (0) | 2013.12.03 |
uart rs232 serial 통신 (0) | 2013.02.08 |