pread(2) - wariua/manpages-ko GitHub Wiki

NAME

pread, pwrite - ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ์˜ ์ง€์ •ํ•œ ์˜คํ”„์…‹์—์„œ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๊ธฐ

SYNOPSIS

#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

DESCRIPTION

pread()๋Š” ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ fd์˜ (ํŒŒ์ผ ์‹œ์ž‘์  ๊ธฐ์ค€) ์˜คํ”„์…‹ offset์—์„œ ์ตœ๋Œ€ count ๊ฐœ ๋ฐ”์ดํŠธ๋ฅผ buf๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฒ„ํผ๋กœ ์ฝ์–ด ๋“ค์ธ๋‹ค. ํŒŒ์ผ ์˜คํ”„์…‹์€ ๋ฐ”๋€Œ์ง€ ์•Š๋Š”๋‹ค.

pwrite()๋Š” buf๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฒ„ํผ์˜ ์ตœ๋Œ€ count ๊ฐœ ๋ฐ”์ดํŠธ๋ฅผ ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ fd์˜ ์˜คํ”„์…‹ offset์— ๊ธฐ๋กํ•œ๋‹ค. ํŒŒ์ผ ์˜คํ”„์…‹์€ ๋ฐ”๋€Œ์ง€ ์•Š๋Š”๋‹ค.

fd๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ํŒŒ์ผ์—์„œ seek์ด ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค.

RETURN VALUE

์„ฑ๊ณต ์‹œ pread()๋Š” ์ฝ์–ด ๋“ค์ธ ๋ฐ”์ดํŠธ ์ˆ˜(0์€ ํŒŒ์ผ ๋ ํ‘œ์‹œ)๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  pwrite()๋Š” ๊ธฐ๋กํ•œ ๋ฐ”์ดํŠธ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์„ฑ๊ณตํ•œ ํ˜ธ์ถœ์—์„œ ์š”์ฒญ๋ณด๋‹ค ์ ์€ ๋ฐ”์ดํŠธ๋ฅผ ์ด๋™ํ•œ ๊ฒƒ์ด ์˜ค๋ฅ˜๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ์ ์— ์œ ์˜ํ•˜๋ผ. (read(2) ๋ฐ write(2) ์ฐธ๊ณ .)

์˜ค๋ฅ˜ ์‹œ -1์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ์˜ค๋ฅ˜ ์›์ธ์„ ๋‚˜ํƒ€๋‚ด๋„๋ก errno๋ฅผ ์„ค์ •ํ•œ๋‹ค.

ERRORS

pread()๋Š” read(2)๋‚˜ lseek(2)์— ๋ช…์„ธ๋œ ์˜ค๋ฅ˜๋กœ ์‹คํŒจํ•˜์—ฌ errno๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. pwrite()๋Š” write(2)๋‚˜ lseek(2)์— ๋ช…์„ธ๋œ ์˜ค๋ฅ˜๋กœ ์‹คํŒจํ•˜์—ฌ errno๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

VERSIONS

๋ฆฌ๋ˆ…์Šค ๋ฒ„์ „ 2.1.60์—์„œ pread() ๋ฐ pwrite() ์‹œ์Šคํ…œ ํ˜ธ์ถœ์ด ์ถ”๊ฐ€๋˜์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  2.1.69์—์„œ i386 ์‹œ์Šคํ…œ ํ˜ธ์ถœ ํ…Œ์ด๋ธ”์— ํ•ญ๋ชฉ์ด ์ถ”๊ฐ€๋˜์—ˆ๋‹ค. glibc 2.1์—์„œ C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ง€์›(์‹œ์Šคํ…œ ํ˜ธ์ถœ์ด ์—†๋Š” ๊ตฌ์‹ ์ปค๋„์—์„œ lseek(2)์„ ์ด์šฉํ•œ ์—๋ฎฌ๋ ˆ์ด์…˜ ํฌํ•จ)์ด ์ถ”๊ฐ€๋˜์—ˆ๋‹ค.

CONFORMING TO

POSIX.1-2001, POSIX.1-2008.

NOTES

pread() ๋ฐ pwrite() ์‹œ์Šคํ…œ ํ˜ธ์ถœ์€ ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ์‘์šฉ์—์„œ ํŠนํžˆ ์œ ์šฉํ•˜๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๊ฐ€ ํŒŒ์ผ ์˜คํ”„์…‹์„ ๋ฐ”๊พธ๋Š” ๊ฒƒ์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์œผ๋ฉด์„œ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๊ฐ™์€ ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ์—์„œ I/O๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ/์ปค๋„ ์ฐจ์ด

๋ฆฌ๋ˆ…์Šค ์ปค๋„ 2.6์—์„œ ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ ํ˜ธ์ถœ์˜ ์ด๋ฆ„์ด ๋ฐ”๋€Œ์—ˆ๋‹ค. pread()๊ฐ€ pread64()๊ฐ€ ๋˜๊ณ  pwrite()๊ฐ€ pwrite64()๊ฐ€ ๋˜์—ˆ๋‹ค. ์‹œ์Šคํ…œ ํ˜ธ์ถœ ๋ฒˆํ˜ธ๋Š” ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋˜์—ˆ๋‹ค. glibc์˜ pread() ๋ฐ pwrite() ๋ž˜ํผ ํ•จ์ˆ˜์—์„œ ์ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํˆฌ๋ช…ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•ด ์ค€๋‹ค.

syscall(2)์—์„œ ์„ค๋ช…ํ•˜๋Š” ์ด์œ ๋“ค ๋•Œ๋ฌธ์— ์ผ๋ถ€ 32๋น„ํŠธ ์•„ํ‚คํ…์ฒ˜์—์„œ๋Š” ์ด ์‹œ์Šคํ…œ ํ˜ธ์ถœ๋“ค์˜ ํ˜ธ์ถœ ์‹œ๊ทธ๋„ˆ์ฒ˜๊ฐ€ ๋‹ค๋ฅด๋‹ค.

BUGS

POSIX์—์„œ๋Š” ํŒŒ์ผ์„ O_APPEND ํ”Œ๋ž˜๊ทธ๋กœ ์—ฌ๋Š” ๊ฒƒ์ด pwrite()์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋กํ•˜๋Š” ์œ„์น˜์— ์–ด๋–ค ์˜ํ–ฅ๋„ ์ฃผ์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค๊ณ  ์š”๊ตฌํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๋ฆฌ๋ˆ…์Šค์—์„œ๋Š” ํŒŒ์ผ์„ O_APPEND๋กœ ์—ด๋ฉด offset ๊ฐ’๊ณผ ์ƒ๊ด€์—†์ด pwrite()๊ฐ€ ํŒŒ์ผ ๋์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ง๋ถ™์ธ๋‹ค.

SEE ALSO

lseek(2), read(2), readv(2), write(2)


2017-09-15

โš ๏ธ **GitHub.com Fallback** โš ๏ธ