pread(2) - wariua/manpages-ko GitHub Wiki
pread, pwrite - ํ์ผ ๋์คํฌ๋ฆฝํฐ์ ์ง์ ํ ์คํ์ ์์ ์ฝ๊ฑฐ๋ ์ฐ๊ธฐ
#include <unistd.h>
ssize_t pread(int fd, void *buf, size_t count, off_t offset);
ssize_t pwrite(int fd, const void *buf, size_t count, off_t offset);
glibc ๊ธฐ๋ฅ ํ์ธ ๋งคํฌ๋ก ์๊ฑด (feature_test_macros(7) ์ฐธ๊ณ ):
-
pread()
,pwrite()
: -
_XOPEN_SOURCE >= 500
|| /* glibc 2.12๋ถํฐ: */ _POSIX_C_SOURCE >= 200809L
pread()
๋ ํ์ผ ๋์คํฌ๋ฆฝํฐ fd
์ (ํ์ผ ์์์ ๊ธฐ์ค) ์คํ์
offset
์์ ์ต๋ count
๊ฐ ๋ฐ์ดํธ๋ฅผ buf
๊ฐ ๊ฐ๋ฆฌํค๋ ๋ฒํผ๋ก ์ฝ์ด ๋ค์ธ๋ค. ํ์ผ ์คํ์
์ ๋ฐ๋์ง ์๋๋ค.
pwrite()
๋ buf
๊ฐ ๊ฐ๋ฆฌํค๋ ๋ฒํผ์ ์ต๋ count
๊ฐ ๋ฐ์ดํธ๋ฅผ ํ์ผ ๋์คํฌ๋ฆฝํฐ fd
์ ์คํ์
offset
์ ๊ธฐ๋กํ๋ค. ํ์ผ ์คํ์
์ ๋ฐ๋์ง ์๋๋ค.
fd
๊ฐ ๊ฐ๋ฆฌํค๋ ํ์ผ์์ seek์ด ๊ฐ๋ฅํด์ผ ํ๋ค.
์ฑ๊ณต ์ pread()
๋ ์ฝ์ด ๋ค์ธ ๋ฐ์ดํธ ์(0์ ํ์ผ ๋ ํ์)๋ฅผ ๋ฐํํ๊ณ pwrite()
๋ ๊ธฐ๋กํ ๋ฐ์ดํธ ์๋ฅผ ๋ฐํํ๋ค.
์ฑ๊ณตํ ํธ์ถ์์ ์์ฒญ๋ณด๋ค ์ ์ ๋ฐ์ดํธ๋ฅผ ์ด๋ํ ๊ฒ์ด ์ค๋ฅ๊ฐ ์๋๋ผ๋ ์ ์ ์ ์ํ๋ผ. (read(2)
๋ฐ write(2)
์ฐธ๊ณ .)
์ค๋ฅ ์ -1์ ๋ฐํํ๋ฉฐ ์ค๋ฅ ์์ธ์ ๋ํ๋ด๋๋ก errno
๋ฅผ ์ค์ ํ๋ค.
pread()
๋ read(2)
๋ lseek(2)์ ๋ช
์ธ๋ ์ค๋ฅ๋ก ์คํจํ์ฌ errno
๋ฅผ ์ค์ ํ ์ ์๋ค. pwrite()
๋ write(2)
๋ lseek(2)์ ๋ช
์ธ๋ ์ค๋ฅ๋ก ์คํจํ์ฌ errno
๋ฅผ ์ค์ ํ ์ ์๋ค.
๋ฆฌ๋
์ค ๋ฒ์ 2.1.60์์ pread()
๋ฐ pwrite()
์์คํ
ํธ์ถ์ด ์ถ๊ฐ๋์๋ค. ๊ทธ๋ฆฌ๊ณ 2.1.69์์ i386 ์์คํ
ํธ์ถ ํ
์ด๋ธ์ ํญ๋ชฉ์ด ์ถ๊ฐ๋์๋ค. glibc 2.1์์ C ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ง์(์์คํ
ํธ์ถ์ด ์๋ ๊ตฌ์ ์ปค๋์์ lseek(2)์ ์ด์ฉํ ์๋ฎฌ๋ ์ด์
ํฌํจ)์ด ์ถ๊ฐ๋์๋ค.
POSIX.1-2001, POSIX.1-2008.
pread()
๋ฐ pwrite()
์์คํ
ํธ์ถ์ ๋ค์ค ์ค๋ ๋ ์์ฉ์์ ํนํ ์ ์ฉํ๋ค. ์ด๋ฅผ ํตํด ๋ค๋ฅธ ์ค๋ ๋๊ฐ ํ์ผ ์คํ์
์ ๋ฐ๊พธ๋ ๊ฒ์ ์ํฅ์ ๋ฐ์ง ์์ผ๋ฉด์ ์ฌ๋ฌ ์ค๋ ๋๊ฐ ๊ฐ์ ํ์ผ ๋์คํฌ๋ฆฝํฐ์์ I/O๋ฅผ ์ํํ ์ ์๋ค.
๋ฆฌ๋
์ค ์ปค๋ 2.6์์ ๊ธฐ๋ฐ ์์คํ
ํธ์ถ์ ์ด๋ฆ์ด ๋ฐ๋์๋ค. pread()
๊ฐ pread64()
๊ฐ ๋๊ณ pwrite()
๊ฐ pwrite64()
๊ฐ ๋์๋ค. ์์คํ
ํธ์ถ ๋ฒํธ๋ ๋์ผํ๊ฒ ์ ์ง๋์๋ค. glibc์ pread()
๋ฐ pwrite()
๋ํผ ํจ์์์ ์ด ๋ณ๊ฒฝ ์ฌํญ์ ํฌ๋ช
ํ๊ฒ ์ฒ๋ฆฌํด ์ค๋ค.
syscall(2)์์ ์ค๋ช ํ๋ ์ด์ ๋ค ๋๋ฌธ์ ์ผ๋ถ 32๋นํธ ์ํคํ ์ฒ์์๋ ์ด ์์คํ ํธ์ถ๋ค์ ํธ์ถ ์๊ทธ๋์ฒ๊ฐ ๋ค๋ฅด๋ค.
POSIX์์๋ ํ์ผ์ O_APPEND
ํ๋๊ทธ๋ก ์ฌ๋ ๊ฒ์ด pwrite()
์์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํ๋ ์์น์ ์ด๋ค ์ํฅ๋ ์ฃผ์ง ์์์ผ ํ๋ค๊ณ ์๊ตฌํ๋ค. ํ์ง๋ง ๋ฆฌ๋
์ค์์๋ ํ์ผ์ O_APPEND
๋ก ์ด๋ฉด offset
๊ฐ๊ณผ ์๊ด์์ด pwrite()
๊ฐ ํ์ผ ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ถ์ธ๋ค.
lseek(2), read(2)
, readv(2), write(2)
2017-09-15