เจเจน เจฒเฉเจ เจฏเฉเจจเจฟเจเจธ เจเจฐเจจเจฒ เจตเจฟเฉฑเจ เจชเจพเจเจชเจฒเจพเจเจจเจพเจ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจจ เจฆเจพ เจตเจฐเจฃเจจ เจเจฐเจฆเจพ เจนเฉเฅค เจฎเฉเจ เจฅเฉเฉเจพ เจจเจฟเจฐเจพเจธเจผ เจธเฉ เจเจฟ เจเฉฑเจ เจคเจพเจเจผเจพ เจฒเฉเจ เจเจฟเจธเจฆเจพ เจธเจฟเจฐเจฒเฉเจ เจนเฉ "
เจ เจธเฉเจ เจเจฟเจธ เจฌเจพเจฐเฉ เจเฉฑเจฒ เจเจฐ เจฐเจนเฉ เจนเจพเจ?
เจชเจพเจเจชเจฒเจพเจเจจเจพเจ, "เจธเจผเจพเจเจฆ เจฏเฉเจจเจฟเจเจธ เจตเจฟเฉฑเจ เจธเจญ เจคเฉเจ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจเจพเจข," เจเฉเจเฉ เจชเฉเจฐเฉเจเจฐเจพเจฎเจพเจ เจจเฉเฉฐ เจเจชเจธ เจตเจฟเฉฑเจ เจเฉเฉเจจ เจฆเฉ เจ เฉฐเจคเจฐเฉเจต เจฏเฉเจจเจฟเจเจธ เจซเจผเจฒเจธเจซเจผเฉ เจฆเฉ เจเฉฑเจ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจนเฉ, เจ เจคเฉ เจจเจพเจฒ เจนเฉ เจเจฎเจพเจเจก เจฒเจพเจเจจ 'เจคเฉ เจเฉฑเจ เจเจพเจฃเฉ เจเจฟเฉฐเจจเฉเจน เจนเฉ:
$ echo hello | wc -c
6
เจเจน เจเจพเจฐเจเจเฉเจธเจผเจฒเจคเจพ เจเจฐเจจเจฒ เจฆเฉเจเจฐเจพ เจชเฉเจฐเจฆเจพเจจ เจเฉเจคเฉ เจธเจฟเจธเจเจฎ เจเจพเจฒ 'เจคเฉ เจจเจฟเจฐเจญเจฐ เจเจฐเจฆเฉ เจนเฉ pipe
, เจเจฟเจธเจฆเจพ เจตเจฐเจฃเจจ เจฆเจธเจคเจพเจตเฉเจเจผเฉ เจชเฉฐเจจเจฟเจเจ 'เจคเฉ เจเฉเจคเจพ เจเจฟเจ เจนเฉ
เจชเจพเจเจชเจฒเจพเจเจจเจพเจ เจเฉฐเจเจฐเจชเฉเจฐเฉเจธเฉเจธ เจธเฉฐเจเจพเจฐ เจฒเจ เจเฉฑเจ เจฆเจฟเจธเจผเจพเจนเฉเจฃ เจเฉเจจเจฒ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจฆเฉเจเจ เจนเจจเฅค เจชเจพเจเจชเจฒเจพเจเจจ เจตเจฟเฉฑเจ เจเฉฑเจ เจเจจเจชเฉเจ (เจเจเจก เจฒเจฟเจเฉ) เจ เจคเฉ เจเฉฑเจ เจเจเจเจชเฉเฉฑเจ (เจเจเจก เจชเฉเฉเจนเฉ) เจนเฉเฅค เจชเจพเจเจชเจฒเจพเจเจจ เจฆเฉ เจเฉฐเจชเฉเฉฑเจ เจจเฉเฉฐ เจฒเจฟเจเจฟเจ เจกเจพเจเจพ เจเจเจเจชเฉเฉฑเจ 'เจคเฉ เจชเฉเฉเจนเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉ.
เจเจพเจฒ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจชเจพเจเจชเจฒเจพเจเจจ เจฌเจฃเจพเจ เจเจ เจนเฉ
pipe(2)
, เจเฉ เจเจฟ เจฆเฉ เจซเจพเจเจฒ เจกเจฟเจธเจเฉเจฐเจฟเจชเจเจฐเจพเจ เจจเฉเฉฐ เจตเจพเจชเจธ เจเจฐเจฆเจพ เจนเฉ: เจเฉฑเจ เจชเจพเจเจชเจฒเจพเจเจจ เจฆเฉ เจเฉฐเจชเฉเฉฑเจ เจฆเจพ เจนเจตเจพเจฒเจพ เจฆเจฟเฉฐเจฆเจพ เจนเฉ, เจฆเฉเจเจพ เจเจเจเจชเฉเฉฑเจ เจฆเจพเฅค
เจเจชเจฐเฉเจเจค เจเจฎเจพเจเจก เจคเฉเจ เจเจฐเฉเจธ เจเจเจเจชเฉเฉฑเจ เจชเจพเจเจชเจฒเจพเจเจจ เจฆเฉ เจธเจฟเจฐเจเจฃเจพ เจ เจคเฉ เจเจธเจฆเฉ เจฆเฉเจเจฐเจพ เจเฉฑเจ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจคเฉเจ เจฆเฉเจเฉ เจคเฉฑเจ เจกเฉเจเจพ เจฆเฉ เจชเฉเจฐเจตเจพเจน เจจเฉเฉฐ เจฆเจฐเจธเจพเจเจเจฆเฉ เจนเฉ:
$ strace -qf -e execve,pipe,dup2,read,write
sh -c 'echo hello | wc -c'
execve("/bin/sh", ["sh", "-c", "echo hello | wc -c"], โฆ)
pipe([3, 4]) = 0
[pid 2604795] dup2(4, 1) = 1
[pid 2604795] write(1, "hellon", 6) = 6
[pid 2604796] dup2(3, 0) = 0
[pid 2604796] execve("/usr/bin/wc", ["wc", "-c"], โฆ)
[pid 2604796] read(0, "hellon", 16384) = 6
[pid 2604796] write(1, "6n", 2) = 2
เจฎเจพเจคเจพ-เจชเจฟเจคเจพ เจฆเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจเจพเจฒ เจเจฐเจฆเฉ เจนเฉ pipe()
เจฎเจพเจเจเจ เจเฉเจคเฉ เจซเจพเจเจฒ เจกเจฟเจธเจเฉเจฐเจฟเจชเจเจฐเจพเจ เจจเฉเฉฐ เจชเฉเจฐเจพเจชเจค เจเจฐเจจ เจฒเจ. เจเฉฑเจ เจฌเจพเจฒ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจเฉฑเจ เจนเฉเจเจกเจฒ เจจเฉเฉฐ เจฒเจฟเจเจฆเฉ เจนเฉ, เจ
เจคเฉ เจฆเฉเจเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจฆเฉเจเฉ เจนเฉเจเจกเจฒ เจคเฉเจ เจเจนเฉ เจกเฉเจเจพ เจชเฉเฉเจนเจฆเฉ เจนเฉเฅค เจธเจผเฉเฉฑเจฒ stdin เจ
เจคเฉ stdout เจจเจพเจฒ เจฎเฉเจฒ เจเจฐเจจ เจฒเจ เจตเจฐเจฃเจจเจเจฐเจคเจพ 2 เจ
เจคเฉ 3 เจจเฉเฉฐ "เจฐเจฟเจจเจพเจฎ" เจเจฐเจจ เจฒเจ dup4 เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเจพ เจนเฉเฅค
เจชเจพเจเจชเจพเจ เจคเฉเจ เจฌเจฟเจจเจพเจ, เจธเจผเฉเฉฑเจฒ เจจเฉเฉฐ เจเฉฑเจ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจฆเจพ เจเจเจเจชเฉเฉฑเจ เจเฉฑเจ เจซเจพเจเจฒ เจตเจฟเฉฑเจ เจฒเจฟเจเจฃเจพ เจชเจเจเจพ เจ เจคเฉ เจซเจพเจเจฒ เจคเฉเจ เจกเฉเจเจพ เจจเฉเฉฐ เจชเฉเฉเจนเจจ เจฒเจ เจเจธเจจเฉเฉฐ เจฆเฉเจเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจตเจฟเฉฑเจ เจชเจพเจธ เจเจฐเจจเจพ เจนเฉเจตเฉเจเจพเฅค เจจเจคเฉเจเฉ เจตเจเฉเจ, เจ เจธเฉเจ เจนเฉเจฐ เจธเจฐเฉเจค เจ เจคเฉ เจกเจฟเจธเจ เจธเจชเฉเจธ เจฌเจฐเจฌเจพเจฆ เจเจฐเจพเจเจเฉเฅค เจนเจพเจฒเจพเจเจเจฟ, เจชเจพเจเจชเจฒเจพเจเจจเจพเจ เจจเจพ เจธเจฟเจฐเจซ เจเฉฐเจเฉเจเจ เจนเจจ เจเจฟเจเจเจเจฟ เจเจน เจคเฉเจนเจพเจจเฉเฉฐ เจ เจธเจฅเจพเจ เจซเจพเจเจฒเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจคเฉเจ เจฌเจเจฃ เจฆเฉ เจเจเจฟเจ เจฆเจฟเฉฐเจฆเฉเจเจ เจนเจจ:
เจเฉเจเจฐ เจเฉเจ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจเจพเจฒเฉ เจชเจพเจเจชเจฒเจพเจเจจ เจคเฉเจ เจชเฉเฉเจนเจจ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐ เจฐเจนเฉ เจนเฉ เจคเจพเจ
read(2)
เจกเจพเจเจพ เจเจชเจฒเจฌเจง เจนเฉเจฃ เจคเฉฑเจ เจฌเจฒเฉเจ เจเฉเจคเจพ เจเจพเจตเฉเจเจพเฅค เจเฉเจเจฐ เจเฉเจ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจชเฉเจฐเฉ เจชเจพเจเจชเจฒเจพเจเจจ เจจเฉเฉฐ เจฒเจฟเจเจฃ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเจฆเฉ เจนเฉ, เจคเจพเจwrite(2)
เจเจฆเฉเจ เจคเฉฑเจ เจฌเจฒเฉเจ เจเฉเจคเจพ เจเจพเจตเฉเจเจพ เจเจฆเฉเจ เจคเฉฑเจ เจฒเจฟเจเจฃ เจฒเจ เจชเจพเจเจชเจฒเจพเจเจจ เจคเฉเจ เจเจพเจซเจผเฉ เจกเฉเจเจพ เจชเฉเฉเจนเจฟเจ เจจเจนเฉเจ เจเจพเจเจฆเจพ เจนเฉเฅค
POSIX เจฒเฉเฉเจพเจ เจตเจพเจเจ, เจเจน เจเฉฑเจ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจนเฉ: เจชเจพเจเจชเจฒเจพเจเจจ เจคเฉฑเจ เจฒเจฟเจเจฃเจพ PIPE_BUF
เจฌเจพเจเจเจธ (เจเฉฑเจเฉ-เจเฉฑเจ 512) เจชเจฐเจฎเจพเจฃเฉ เจนเฉเจฃเฉ เจเจพเจนเฉเจฆเฉ เจนเจจ เจคเจพเจ เจเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจเจตเจพเจ เจชเจพเจเจชเจฒเจพเจเจจ เจฐเจพเจนเฉเจ เจเฉฑเจ เจฆเฉเจเฉ เจจเจพเจฒ เจเจธ เจคเจฐเฉเจเฉ เจจเจพเจฒ เจธเฉฐเจเจพเจฐ เจเจฐ เจธเจเจฃ เจเจฟ เจจเจฟเจฏเจฎเจค เจซเจพเจเจฒเจพเจ (เจเฉ เจ
เจเจฟเจนเฉเจเจ เจเจฐเฉฐเจเฉเจเจ เจชเฉเจฐเจฆเจพเจจ เจจเจนเฉเจ เจเจฐเจฆเฉเจเจ) เจจเจนเฉเจ เจเจฐ เจธเจเจฆเฉเจเจเฅค
เจเฉฑเจ เจจเจฟเจฏเจฎเจค เจซเจพเจเจฒ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจธเจฎเฉเจ, เจเฉฑเจ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจเจธเจฆเฉ เจธเจพเจฐเฉ เจเจเจเจชเฉเฉฑเจ เจจเฉเฉฐ เจเจธ เจตเจฟเฉฑเจ เจฒเจฟเจ เจธเจเจฆเฉ เจนเฉ เจ เจคเฉ เจเจธเจจเฉเฉฐ เจเจฟเจธเฉ เจนเฉเจฐ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจตเจฟเฉฑเจ เจญเฉเจ เจธเจเจฆเฉ เจนเฉ. เจเจพเจ เจชเฉเจฐเจเจฟเจฐเจฟเจเจตเจพเจ เจเฉฑเจ เจฌเจนเฉเจค เจนเฉ เจธเจฎเจพเจจเจพเจเจคเจฐ เจฎเฉเจก เจตเจฟเฉฑเจ เจเฉฐเจฎ เจเจฐ เจธเจเจฆเฉเจเจ เจนเจจ, เจเฉฑเจ เจฌเจพเจนเจฐเฉ เจธเจฟเจเจจเจฒ เจตเจฟเจงเฉ (เจเจฟเจตเฉเจ เจเฉฑเจ เจธเฉเจฎเจพเจซเฉเจฐ) เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ เจเฉฑเจ เจฆเฉเจเฉ เจจเฉเฉฐ เจธเฉเจเจฟเจค เจเจฐเจจ เจฒเจ เจเจฆเฉเจ เจเฉฑเจ เจฒเจฟเจเจฃเจพ เจเจพเจ เจชเฉเฉเจนเจฟเจ เจเจพเจเจฆเจพ เจนเฉเฅค เจเจจเจตเฉเจ เจฐ เจธเจพเจจเฉเฉฐ เจเจธ เจธเจพเจฐเฉ เจชเจฐเฉเจธเจผเจพเจจเฉ เจคเฉเจ เจฌเจเจพเจเจเจฆเฉ เจนเจจเฅค
เจ เจธเฉเจ เจเฉ เจฒเฉฑเจญ เจฐเจนเฉ เจนเจพเจ?
เจฎเฉเจ เจเจธเจจเฉเฉฐ เจธเจงเจพเจฐเจจ เจธเจผเจฌเจฆเจพเจ เจตเจฟเฉฑเจ เจตเจฟเจเจเจฟเจ เจเจฐเจพเจเจเจพ เจคเจพเจ เจเฉ เจคเฉเจนเจพเจกเฉ เจฒเจ เจเจน เจเจฒเจชเจจเจพ เจเจฐเจจเจพ เจเจธเจพเจจ เจนเฉเจตเฉ เจเจฟ เจเฉฑเจ เจเจจเจตเฉเจ เจฐ เจเจฟเจตเฉเจ เจเฉฐเจฎ เจเจฐ เจธเจเจฆเจพ เจนเฉเฅค เจคเฉเจนเจพเจจเฉเฉฐ เจฎเฉเจฎเฉเจฐเฉ เจตเจฟเฉฑเจ เจเฉฑเจ เจฌเจซเจฐ เจ เจคเฉ เจเฉเจ เจฐเจพเจ เจจเจฟเจฐเจงเจพเจฐเจค เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเจตเฉเจเฉเฅค เจคเฉเจนเจพเจจเฉเฉฐ เจฌเจซเจฐ เจคเฉเจ เจกเจพเจเจพ เจเฉเฉเจจ เจ เจคเฉ เจนเจเจพเจเจฃ เจฒเจ เจซเฉฐเจเจธเจผเจจเจพเจ เจฆเฉ เจฒเฉเฉ เจนเฉเจตเฉเจเฉเฅค เจคเฉเจนเจพเจจเฉเฉฐ เจซเจพเจเจฒ เจกเจฟเจธเจเฉเจฐเจฟเจชเจเจฐเจพเจ 'เจคเฉ เจฐเฉเจก เจ เจคเฉ เจฐเจพเจเจ เจเจชเจฐเฉเจธเจผเจจเจพเจ เจฆเฉเจฐเจพเจจ เจซเฉฐเจเจธเจผเจจเจพเจ เจจเฉเฉฐ เจเจพเจฒ เจเจฐเจจ เจฒเจ เจเฉเจ เจธเจพเจงเจจเจพเจ เจฆเฉ เจฒเฉเฉ เจชเจตเฉเจเฉเฅค เจ เจคเฉ เจคเฉเจนเจพเจจเฉเฉฐ เจเฉฑเจชเจฐ เจฆเฉฑเจธเฉ เจเจ เจตเจฟเจธเจผเฉเจธเจผ เจตเจฟเจตเจนเจพเจฐ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจจ เจฒเจ เจคเจพเจฒเฉ เจฆเฉ เจฒเฉเฉ เจชเจตเฉเจเฉเฅค
เจนเฉเจฃ เจ เจธเฉเจ เจเจชเจฃเฉ เจ เจธเจชเจธเจผเจ เจฎเจพเจจเจธเจฟเจ เจฎเจพเจกเจฒ เจฆเฉ เจชเฉเจธเจผเจเฉ เจเจฐเจจ เจเจพเจ เจเจฒเจค เจธเจพเจฌเจค เจเจฐเจจ เจฒเจ เจเจฎเจเจฆเจพเจฐ เจฒเฉเจเจชเจฒเจพเจเจ เจฆเฉ เจ เจงเฉเจจ เจเจฐเจจเจฒ เจธเจฐเฉเจค เจเฉเจก เจฆเฉ เจชเฉเฉฑเจเจเจฟเฉฑเจ เจเจฐเจจ เจฒเจ เจคเจฟเจเจฐ เจนเจพเจเฅค เจชเจฐ เจนเจฎเฉเจธเจผเจพ เจ เจเจพเจจเจ เจฒเจ เจคเจฟเจเจฐ เจฐเจนเฉ.
เจ เจธเฉเจ เจเจฟเฉฑเจฅเฉ เจฆเฉเจ เจฐเจนเฉ เจนเจพเจ?
เจฎเฉเจจเฉเฉฐ เจจเจนเฉเจ เจชเจคเจพ เจเจฟ เจฎเฉเจฐเฉ เจฎเจธเจผเจนเฉเจฐ เจเจฟเจคเจพเจฌ เจฆเฉ เจเจพเจชเฉ เจเจฟเฉฑเจฅเฉ เจนเฉ "
TUHS เจชเฉเจฐเจพเจฒเฉเจเจพเจ เจตเจฟเฉฑเจ เจเฉเฉฐเจฎเจฃเจพ เจเฉฑเจ เจ เจเจพเจเจฌ เจเจฐ เจตเจฟเฉฑเจ เจเจพเจฃ เจตเจฐเจเจพ เจนเฉเฅค เจ เจธเฉเจ เจเจชเจฃเฉ เจธเจพเจเจเฉ เจเจคเจฟเจนเจพเจธ เจจเฉเฉฐ เจฆเฉเจ เจธเจเจฆเฉ เจนเจพเจ, เจ เจคเฉ เจฎเฉเจ เจชเฉเจฐเจพเจฃเฉเจเจ เจเฉเจชเจพเจ เจ เจคเฉ เจชเฉเจฐเจฟเฉฐเจเจธ เจคเฉเจ เจเจธ เจธเจพเจฐเฉ เจธเจฎเฉฑเจเจฐเฉ เจจเฉเฉฐ เจฅเฉเฉเฉเจนเจพ-เจฅเฉเฉเฉเจนเจพ เจเจฐเจเฉ เจฎเฉเฉ เจชเฉเจฐเจพเจชเจค เจเจฐเจจ เจฒเจ เจเจ เจธเจพเจฒเจพเจ เจฆเฉ เจฏเจคเจจเจพเจ เจฆเจพ เจธเจจเจฎเจพเจจ เจเจฐเจฆเจพ เจนเจพเจเฅค เจ เจคเฉ เจฎเฉเจ เจเจจเฉเจนเจพเจ เจเฉเจเฉเจฟเจเจ เจฌเจพเจฐเฉ เจชเฉเจฐเฉ เจคเจฐเฉเจนเจพเจ เจเจพเจฃเฉ เจนเจพเจ เจเฉ เจ เจเฉ เจตเฉ เจฒเจพเจชเจคเจพ เจนเจจ.
เจเจจเจตเฉเจ เจฐเจพเจ เจฆเฉ เจชเฉเจฐเจพเจเฉเจจ เจเจคเจฟเจนเจพเจธ เจฌเจพเจฐเฉ เจธเจพเจกเฉ เจเจคเจธเฉเจเจคเจพ เจจเฉเฉฐ เจธเฉฐเจคเฉเจธเจผเจ เจเจฐเจจ เจคเฉเจ เจฌเจพเจ เจฆ, เจ เจธเฉเจ เจคเฉเจฒเจจเจพ เจฒเจ เจเจงเฉเจจเจฟเจ เจเจฐเจจเจฒ เจฆเฉเจ เจธเจเจฆเฉ เจนเจพเจเฅค
เจคเจฐเฉเจเฉ เจจเจพเจฒ เจเจฐ เจเฉ, pipe
เจธเจพเจฐเจฃเฉ เจตเจฟเฉฑเจ เจธเจฟเจธเจเจฎ เจเจพเจฒ เจจเฉฐเจฌเจฐ 42 เจนเฉ sysent[]
. เจเจคเจซเจผเจพเจ?
เจฐเจตเจพเจเจคเฉ เจฏเฉเจจเจฟเจเจธ เจเจฐเจจเจฒ (1970-1974)
เจฎเฉเจจเฉเฉฐ เจเฉเจ เจจเจฟเจธเจผเจพเจจ เจจเจนเฉเจ เจฎเจฟเจฒเจฟเจ pipe(2)
เจจเจพ เจนเฉ เจ
เฉฐเจฆเจฐ
TUHS เจเจนเจฟเฉฐเจฆเจพ เจนเฉ เจเจฟ
เจฏเฉเจจเจฟเจเจธ เจคเฉเจธเจฐเจพ เจเจกเฉเจธเจผเจจ เจ เจธเฉเจเจฌเจฒเฉ เจญเจพเจธเจผเจพ เจตเจฟเฉฑเจ เจฒเจฟเจเจฟเจ เจเฉฑเจ เจเจฐเจจเจฒ เจตเจพเจฒเจพ เจเจเจฐเฉ เจธเฉฐเจธเจเจฐเจฃ เจธเฉ, เจชเจฐ เจชเจพเจเจชเจฒเจพเจเจจเจพเจ เจตเจพเจฒเจพ เจชเจนเจฟเจฒเจพ เจธเฉฐเจธเจเจฐเจฃ เจตเฉ เจธเฉเฅค 1973 เจฆเฉ เจฆเฉเจฐเจพเจจ, เจคเฉเจเฉ เจเจกเฉเจธเจผเจจ เจตเจฟเฉฑเจ เจธเฉเจงเจพเจฐ เจเจฐเจจ เจฒเจ เจเฉฐเจฎ เจเฉเจคเจพ เจเจฟเจ เจธเฉ, เจเจฐเจจเจฒ เจจเฉเฉฐ C เจตเจฟเฉฑเจ เจฆเฉเจฌเจพเจฐเจพ เจฒเจฟเจเจฟเจ เจเจฟเจ เจธเฉ, เจ เจคเฉ เจเจธ เจคเจฐเฉเจนเจพเจ เจฏเฉเจจเจฟเจเจธ เจฆเจพ เจเฉเจฅเจพ เจธเฉฐเจธเจเจฐเจฃ เจชเฉเจฐเจเจ เจนเฉเจเจเฅค
เจเฉฑเจ เจชเจพเจ เจ เจจเฉเฉฐ เจเฉฑเจ เจฆเจธเจคเจพเจตเฉเจเจผ เจฆเจพ เจธเจเฉเจจ เจฎเจฟเจฒเจฟเจ เจเจฟเจธ เจตเจฟเฉฑเจ เจกเฉฑเจ เจฎเฉเจเจฟเจฒเจฐเฉเจ เจจเฉ "เจฌเจเฉเจเฉ เจฆเฉ เจนเฉเจเจผ เจตเจพเจเจ เจชเฉเจฐเฉเจเจฐเจพเจฎเจพเจ เจจเฉเฉฐ เจเฉเฉเจจ" เจฆเจพ เจตเจฟเจเจพเจฐ เจชเฉเจธเจผ เจเฉเจคเจพเฅค
เจฌเฉเจฐเจพเจเจจ เจเฉเจฐเจจเฉเจเจจ เจฆเฉ เจเจฟเจคเจพเจฌ เจตเจฟเฉฑเจ
เจเจฆเฉเจ เจฏเฉเจจเจฟเจเจธ เจฌเจพเจนเจฐ เจเจเจ, เจคเจพเจ เจเฉเจฐเฉเจเฉเจจ เจฆเฉ เจจเจพเจฒ เจฎเฉเจฐเจพ เจฎเฉเจน เจฎเฉเจจเฉเฉฐ OS เจฆเฉ เจฒเฉเจเจ, เจเฉเจจ เจฅเฉเจฎเจธเจจ เจจเฉเฉฐ เจชเฉเฉฑเจเจฃ เจฒเจ เจชเฉเจฐเฉเจฐเจฟเจค เจเจฐเจฆเจพ เจธเฉ, เจเฉฑเจ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจฒเจ เจฒเจฟเจเฉ เจกเฉเจเจพ เจจเฉเฉฐ เจจเจพ เจธเจฟเจฐเจซเจผ เจกเจฟเจตเจพเจเจธ เจตเจฟเฉฑเจ เจเจพเจฃ เจฆเฉ เจเจเจพเจเจผเจค เจฆเฉเจฃ เจฒเจ, เจธเจเฉเจ เจเจฟเจธเฉ เจนเฉเจฐ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจตเจฟเฉฑเจ เจเจเจเจชเฉเฉฑเจ เจเจฐเจจ เจฒเจ เจตเฉเฅค เจเฉเจจ เจจเฉ เจซเฉเจธเจฒเจพ เจเฉเจคเจพ เจเจฟ เจเจน เจธเฉฐเจญเจต เจธเฉ. เจนเจพเจฒเจพเจเจเจฟ, เจเฉฑเจ เจเฉฑเจเฉ-เจเฉฑเจ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ, เจเจน เจเจพเจนเฉเฉฐเจฆเจพ เจธเฉ เจเจฟ เจนเจฐเฉเจ เจธเจฟเจธเจเจฎ เจซเฉฐเจเจธเจผเจจ เจเฉฑเจ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจญเฉเจฎเจฟเจเจพ เจจเจฟเจญเจพเจตเฉเฅค เจเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจเจตเจพเจ เจฆเฉ เจตเจฟเจเจเจพเจฐ เจธเจฟเฉฑเจงเจพ เจฒเจฟเจเจฃเจพ เจเฉฑเจ เจเฉฐเจเจฐเจฎเฉเจกเฉเจเจ เจซเจพเจเจฒ เจจเฉเฉฐ เจฒเจฟเจเจฃ เจจเจพเจฒเฉเจ เจเฉฑเจ เจตเฉฑเจกเจพ เจซเจพเจเจฆเจพ เจนเฉ? เจเจน เจเจฆเฉเจ เจนเฉ เจธเฉ เจเจฆเฉเจ เจฎเฉเจ เจเจเจฐเจธเจผเจ เจจเจพเจฎ "เจชเจพเจเจชเจฒเจพเจเจจ" เจ เจคเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจเจตเจพเจ เจตเจฟเจเจเจพเจฐ เจเจชเจธเฉ เจคเจพเจฒเจฎเฉเจฒ เจฒเจ เจธเฉฐเจเฉเจเจธ เจฆเฉ เจตเจฐเจฃเจจ เจจเจพเจฒ เจเฉฑเจ เจเจพเจธ เจชเฉเจฐเจธเจคเจพเจต เจฌเจฃเจพเจเจ เจธเฉ เจเฉ เจเฉเจจ เจจเฉ เจ เฉฐเจค เจตเจฟเฉฑเจ เจเจฟเจนเจพ: "เจฎเฉเจ เจเจน เจเจฐเจพเจเจเจพ!"
เจ เจคเฉ เจเฉเจคเจพ. เจเฉฑเจ เจญเจฟเจเจจเจ เจธเจผเจพเจฎ, เจเฉเจจ เจจเฉ เจเจฐเจจเจฒ เจ เจคเฉ เจธเจผเฉเฉฑเจฒ เจจเฉเฉฐ เจฌเจฆเจฒเจฟเจ, เจเจ เจฎเจฟเจเจฐเฉ เจชเฉเจฐเฉเจเจฐเจพเจฎเจพเจ เจจเฉเฉฐ เจฎเจฟเจเจฐเฉ เจฌเจฃเจพเจเจฃ เจฒเจ เจซเจฟเจเจธ เจเฉเจคเจพ เจเจฟ เจเจนเจจเจพเจ เจจเฉ เจเฉฐเจชเฉเฉฑเจ เจจเฉเฉฐ เจเจฟเจตเฉเจ เจธเจตเฉเจเจพเจฐ เจเฉเจคเจพ (เจเฉ เจเจฟ เจเฉฑเจ เจชเจพเจเจชเจฒเจพเจเจจ เจคเฉเจ เจ เจธเจเจฆเจพ เจนเฉ), เจ เจคเฉ เจซเจพเจเจฒ เจฆเฉ เจจเจพเจฎ เจตเฉ เจฌเจฆเจฒเฉเฅค เจ เจเจฒเฉ เจฆเจฟเจจ, เจชเจพเจเจชเจฒเจพเจเจจเจพเจ เจจเฉเฉฐ เจเจชเจฒเฉเจเฉเจธเจผเจจเจพเจ เจตเจฟเฉฑเจ เจฌเจนเฉเจค เจตเจฟเจเจชเจ เจฐเฉเจช เจตเจฟเฉฑเจ เจตเจฐเจคเจฟเจ เจเจพเจฃ เจฒเฉฑเจเจพเฅค เจนเจซเจผเจคเฉ เจฆเฉ เจ เฉฐเจค เจคเฉฑเจ, เจธเจเฉฑเจคเจฐ เจเจนเจจเจพเจ เจจเฉเฉฐ เจตเจฐเจก เจชเฉเจฐเฉเจธเฉเจธเจฐเจพเจ เจคเฉเจ เจชเฉเจฐเจฟเฉฐเจเจฐ เจคเฉฑเจ เจฆเจธเจคเจพเจตเฉเจเจผ เจญเฉเจเจฃ เจฒเจ เจตเจฐเจค เจฐเจนเฉ เจธเจจเฅค เจฅเฉเฉเฉเจนเฉ เจฆเฉเจฐ เจฌเจพเจ เจฆ, เจเฉเจจ เจจเฉ เจชเจพเจเจชเจฒเจพเจเจจเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจจเฉเฉฐ เจเจฒเฉเจจเจฐ เจเจจเจตเฉเจจเจธเจผเจจเจพเจ เจจเจพเจฒ เจธเจฎเฉเจเจฃ เจฒเจ เจ เจธเจฒเฉ API เจ เจคเฉ เจธเฉฐเจเฉเจเจธ เจจเฉเฉฐ เจฌเจฆเจฒ เจฆเจฟเฉฑเจคเจพ, เจเฉ เจเจฟ เจเจฆเฉเจ เจคเฉเจ เจตเจฐเจคเจฟเจ เจเจพ เจฐเจฟเจนเจพ เจนเฉเฅค
เจฌเจฆเจเจฟเจธเจฎเจคเฉ เจจเจพเจฒ, เจคเฉเจเฉ เจเจกเฉเจธเจผเจจ เจฏเฉเจจเจฟเจเจธ เจเจฐเจจเจฒ เจฒเจ เจธเจฐเฉเจค เจเฉเจก เจเฉเฉฐเจฎ เจนเฉ เจเจฟเจ เจนเฉเฅค เจ
เจคเฉ เจนเจพเจฒเจพเจเจเจฟ เจธเจพเจกเฉ เจเฉเจฒ เจเจฐเจจเจฒ เจธเฉเจฐเจธ เจเฉเจก C เจตเจฟเฉฑเจ เจฒเจฟเจเจฟเจ เจนเฉเจเจ เจนเฉ
เจธเจพเจกเฉ เจเฉเจฒ เจเฉเจเจธเจ เจฆเจธเจคเจพเจตเฉเจเจผ เจนเจจ pipe(2)
เจฆเฉเจตเจพเจ เจฐเฉเจฒเฉเจเจผเจพเจ เจคเฉเจ, เจคเจพเจ เจเฉ เจคเฉเจธเฉเจ เจฆเจธเจคเจพเจตเฉเจเจผเจพเจ เจฆเฉ เจเฉเจ เจเจฐเจเฉ เจธเจผเฉเจฐเฉ เจเจฐ เจธเจเฉ pipe(2)
เจ
เจธเฉเจเจฌเจฒเฉ เจญเจพเจธเจผเจพ เจตเจฟเฉฑเจ เจฒเจฟเจเจฟเจ เจเจฟเจ เจนเฉ เจ
เจคเฉ เจธเจฟเจฐเจซ เจเฉฑเจ เจซเจพเจเจฒ เจกเจฟเจธเจเฉเจฐเจฟเจชเจเจฐ เจตเจพเจชเจธ เจเจฐเจฆเจพ เจนเฉ, เจชเจฐ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจเจฎเฉเจฆ เจเฉเจคเฉ เจฌเฉเจจเจฟเจเจฆเฉ เจเจพเจฐเจเจเฉเจธเจผเจฒเจคเจพ เจชเฉเจฐเจฆเจพเจจ เจเจฐเจฆเจพ เจนเฉ:
เจธเจฟเจธเจเจฎ เจเจพเจฒ เจชเจพเจเจช เจชเจพเจเจชเจฒเจพเจเจจ เจจเจพเจฎเจ เจเฉฑเจ เจเจจเจชเฉเจ/เจเจเจเจชเฉเฉฑเจ เจตเจฟเจงเฉ เจฌเจฃเจพเจเจเจฆเจพ เจนเฉเฅค เจตเจพเจชเจธ เจเฉเจคเฉ เจซเจพเจเจฒ เจกเจฟเจธเจเฉเจฐเจฟเจชเจเจฐ เจจเฉเฉฐ เจชเฉเฉเจนเจจ เจ เจคเฉ เจฒเจฟเจเจฃ เจฆเฉเจเจ เจเจพเจฐเจตเจพเจเจเจ เจฒเจ เจตเจฐเจคเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค เจเจฆเฉเจ เจชเจพเจเจชเจฒเจพเจเจจ 'เจคเฉ เจเฉเจ เจฒเจฟเจเจฟเจ เจเจพเจเจฆเจพ เจนเฉ, เจคเจพเจ 504 เจฌเจพเจเจ เจคเฉฑเจ เจฆเจพ เจกเจพเจเจพ เจฌเจซเจฐ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ, เจเจฟเจธ เจคเฉเจ เจฌเจพเจ เจฆ เจฒเจฟเจเจฃ เจฆเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจจเฉเฉฐ เจฎเฉเจ เฉฑเจคเจฒ เจเจฐ เจฆเจฟเฉฑเจคเจพ เจเจพเจเจฆเจพ เจนเฉเฅค เจชเจพเจเจชเจฒเจพเจเจจ เจคเฉเจ เจชเฉเฉเจนเจฆเฉ เจธเจฎเฉเจ, เจฌเจซเจฐเจก เจกเฉเจเจพ เจเฉเจน เจฒเจฟเจ เจเจพเจเจฆเจพ เจนเฉเฅค
เจ
เจเจฒเฉ เจธเจพเจฒ เจคเฉฑเจ เจเจฐเจจเจฒ เจจเฉเฉฐ C เจตเจฟเฉฑเจ เจฆเฉเจฌเจพเจฐเจพ เจฒเจฟเจเจฟเจ เจเจฟเจ เจธเฉ, เจ
เจคเฉ pipe(fildes)
"
เจธเจฟเจธเจเจฎ เจเจพเจฒ เจชเจพเจเจช เจชเจพเจเจชเจฒเจพเจเจจ เจจเจพเจฎเจ เจเฉฑเจ เจเจจเจชเฉเจ/เจเจเจเจชเฉเฉฑเจ เจตเจฟเจงเฉ เจฌเจฃเจพเจเจเจฆเจพ เจนเฉเฅค เจตเจพเจชเจธ เจเฉเจคเฉ เจเจ เจซเจพเจเจฒ เจกเจฟเจธเจเฉเจฐเจฟเจชเจเจฐเจพเจ เจจเฉเฉฐ เจชเฉเฉเจนเจจ เจ เจคเฉ เจฒเจฟเจเจฃ เจฆเฉ เจเจพเจฐเจเจพเจ เจตเจฟเฉฑเจ เจตเจฐเจคเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค เจเจฆเฉเจ เจชเจพเจเจชเจฒเจพเจเจจ 'เจคเฉ เจเฉเจ เจฒเจฟเจเจฟเจ เจเจพเจเจฆเจพ เจนเฉ, เจคเจพเจ r1 (resp. fildes[1]) เจตเจฟเฉฑเจ เจตเจพเจชเจธ เจเจ เจนเฉเจเจกเจฒ เจฆเฉ เจตเจฐเจคเฉเจ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ, เจกเฉเจเจพ เจฆเฉ 4096 เจฌเจพเจเจเจพเจ เจตเจฟเฉฑเจ เจฌเจซเจฐ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ, เจเจฟเจธ เจคเฉเจ เจฌเจพเจ เจฆ เจฒเจฟเจเจฃ เจฆเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจจเฉเฉฐ เจฎเฉเจ เฉฑเจคเจฒ เจเจฐ เจฆเจฟเฉฑเจคเจพ เจเจพเจเจฆเจพ เจนเฉเฅค เจชเจพเจเจชเจฒเจพเจเจจ เจคเฉเจ เจชเฉเฉเจนเจฆเฉ เจธเจฎเฉเจ, เจนเฉเจเจกเจฒ r0 (resp. fildes[0]) 'เจคเฉ เจตเจพเจชเจธ เจ เจเจพเจเจฆเจพ เจนเฉ, เจกเฉเจเจพ เจฒเฉเจเจฆเจพ เจนเฉเฅค
เจเจน เจฎเฉฐเจจเจฟเจ เจเจพเจเจฆเจพ เจนเฉ เจเจฟ เจเฉฑเจ เจตเจพเจฐ เจชเจพเจเจชเจฒเจพเจเจจ เจจเฉเฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเจฐเจจ เจคเฉเจ เจฌเจพเจ เจฆ, เจฆเฉ (เจเจพเจ เจตเฉฑเจง) เจธเฉฐเจเจพเจฐ เจชเฉเจฐเจเจฟเจฐเจฟเจเจตเจพเจ (เจเจธ เจคเฉเจ เจฌเจพเจ เจฆ เจฆเฉเจเจ เจเจพเจฒเจพเจ เจฆเฉเจเจฐเจพ เจฌเจฃเจพเจเจเจ เจเจเจเจ เจซเฉเจฐเจ) เจเจพเจฒเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจชเจพเจเจชเจฒเจพเจเจจ เจคเฉเจ เจกเจพเจเจพ เจเฉเจฐเจพเจเจธเจซเจฐ เจเจฐเฉเจเจพ เจจเฉเฉฐ เจชเฉเฉเจนเจจ ะธ เจฒเจฟเจเจฃ เจฆเฉ.
เจธเจผเฉเฉฑเจฒ เจตเจฟเฉฑเจ เจชเจพเจเจชเจฒเจพเจเจจ เจฆเฉเจเจฐเจพ เจเฉเฉเฉเจเจ เจชเฉเจฐเจเจฟเจฐเจฟเจเจตเจพเจ เจฆเฉ เจเฉฑเจ เจฒเฉเจจเฉเจ เจฐ เจเจฐเฉ เจจเฉเฉฐ เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเจฐเจจ เจฒเจ เจเฉฑเจ เจธเฉฐเจเฉเจเจธ เจนเฉเฅค
เจเฉฑเจ เจเจพเจฒเฉ เจชเจพเจเจชเจฒเจพเจเจจ เจคเฉเจ เจชเฉเฉเจนเจจ เจฒเจ เจเจพเจฒเจพเจ (เจเจฟเจธ เจตเจฟเฉฑเจ เจเฉเจ เจฌเจซเจฐเจก เจกเฉเจเจพ เจจเจนเฉเจ เจนเฉ) เจเจฟเจธเจฆเจพ เจธเจฟเจฐเจซเจผ เจเฉฑเจ เจธเจฟเจฐเจพ เจนเฉ (เจธเจพเจฐเฉ เจฒเจฟเจเจฃ เจตเจพเจฒเฉ เจซเจพเจเจฒ เจกเจฟเจธเจเฉเจฐเจฟเจชเจเจฐ เจฌเฉฐเจฆ เจนเจจ) "เจซเจพเจเจฒ เจฆเจพ เจ เฉฐเจค" เจตเจพเจชเจธ เจเจฐเจฆเฉ เจนเจจเฅค เจเฉฑเจ เจธเจฎเจพเจจ เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ เจฒเจฟเจเจฃ เจฒเจ เจเจพเจฒเจพเจ เจจเฉเฉฐ เจ เจฃเจกเจฟเฉฑเจ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉเฅค
เจธเจญ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ
เจฏเฉเจจเจฟเจเจธ เจฆเจพ เจเฉเจตเจพเจ เจเจกเฉเจธเจผเจจ (1975)
เจเจ เจฏเฉเจจเจฟเจเจธ เจธเฉเจฐเจธ เจเฉเจก เจจเฉเฉฐ เจชเฉเฉเจนเจจเจพ เจธเจผเฉเจฐเฉ เจเจฐเฉเจ
เจเจ เจธเจพเจฒเจพเจ เจคเฉเจ เจเจฟเจคเจพเจฌ เจฒเจพเจเจจเจเจผ เจฌเฉเจฒ เจฒเฉเจฌเจเจผ เจฆเฉ เจฌเจพเจนเจฐ เจเจชเจฒเจฌเจง เจฏเฉเจจเจฟเจเจธ เจเจฐเจจเจฒ เจฆเจพ เจเฉฑเจเฉ-เจเฉฑเจ เจฆเจธเจคเจพเจตเฉเจเจผ เจธเฉเฅค เจนเจพเจฒเจพเจเจเจฟ เจเฉเจตเฉเจ เจเจกเฉเจธเจผเจจ เจฆเฉ เจฒเจพเจเจธเฉเจเจธ เจจเฉ เจ เจงเจฟเจเจชเจเจพเจ เจจเฉเฉฐ เจเจธเจฆเฉ เจธเจฐเฉเจค เจเฉเจก เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจจ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฑเจคเฉ, เจธเฉฑเจคเจตเฉเจ เจเจกเฉเจธเจผเจจ เจฆเฉ เจฒเจพเจเจธเฉเจเจธ เจจเฉ เจเจธ เจธเฉฐเจญเจพเจตเจจเจพ เจจเฉเฉฐ เจฌเจพเจนเจฐ เจฐเฉฑเจเจฟเจ, เจเจธเจฒเจ เจเจฟเจคเจพเจฌ เจจเฉเฉฐ เจเฉเจฐ-เจเจพเจจเฉเฉฐเจจเฉ เจเจพเจเจชเจฐเจพเจเจ เจเจพเจชเฉเจเจ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจตเฉฐเจกเจฟเจ เจเจฟเจเฅค
เจ
เฉฑเจ เจคเฉเจธเฉเจ เจเจฟเจคเจพเจฌ เจฆเจพ เจฎเฉเฉ-เจชเฉเจฐเจฟเฉฐเจ เจเจฐเฉเจฆ เจธเจเจฆเฉ เจนเฉ, เจเจฟเจธ เจฆเจพ เจเจตเจฐ เจเจพเจชเฉ เจฎเจธเจผเฉเจจ 'เจคเฉ เจตเจฟเจฆเจฟเจเจฐเจฅเฉเจเจ เจจเฉเฉฐ เจฆเจฟเจเจพเจเจเจฆเจพ เจนเฉเฅค เจ
เจคเฉ เจตเจพเจฐเจจ เจเฉเจฎเฉ เจฆเจพ เจงเฉฐเจจเจตเจพเจฆ (เจเจฟเจธ เจจเฉ TUHS เจชเฉเจฐเฉเจเฉเจเจ เจธเจผเฉเจฐเฉ เจเฉเจคเจพ) เจคเฉเจธเฉเจ เจกเจพเจเจจเจฒเฉเจก เจเจฐ เจธเจเจฆเฉ เจนเฉ
15 เจธเจพเจฒ เจชเจนเจฟเจฒเจพเจ, เจฎเฉเจ เจฆเจฟเฉฑเจคเฉ เจเจ เจธเจฐเฉเจค เจเฉเจก เจฆเฉ เจเฉฑเจ เจเจพเจชเฉ เจเจพเจเจช เจเฉเจคเฉ เจธเฉ เจฒเจพเจเจจเจเจผ, เจเจฟเจเจเจเจฟ เจฎเฉเจจเฉเฉฐ เจนเฉเจฐ เจเจพเจชเฉเจเจ เจฆเฉ เจ เจฃเจเจพเจฃ เจเจฟเจฃเจคเฉ เจคเฉเจ เจฎเฉเจฐเฉ เจเจพเจชเฉ เจฆเฉ เจเฉเจฃเจตเฉฑเจคเจพ เจชเจธเฉฐเจฆ เจจเจนเฉเจ เจธเฉเฅค TUHS เจ เจเฉ เจฎเฉเจเฉเจฆ เจจเจนเฉเจ เจธเฉ เจ เจคเฉ เจฎเฉเจฐเฉ เจเฉเจฒ เจชเฉเจฐเจพเจฃเฉ เจธเจฐเฉเจคเจพเจ เจคเฉฑเจ เจชเจนเฉเฉฐเจ เจจเจนเฉเจ เจธเฉเฅค เจชเจฐ 1988 เจตเจฟเฉฑเจ, เจฎเฉเจจเฉเฉฐ เจเฉฑเจ เจชเฉเจฐเจพเจฃเฉ 9-เจเจฐเฉเจ เจเฉเจช เจฎเจฟเจฒเฉ เจเจฟเจธ เจตเจฟเฉฑเจ เจเฉฑเจ PDP11 เจเฉฐเจชเจฟเจเจเจฐ เจคเฉเจ เจฌเฉเจเจ เฉฑเจช เจธเจผเจพเจฎเจฒ เจธเฉเฅค เจเจน เจฆเฉฑเจธเจฃเจพ เจเจเจพ เจธเฉ เจเจฟ เจเฉ เจเจน เจเฉฐเจฎ เจเจฐ เจฐเจฟเจนเจพ เจธเฉ, เจชเจฐ เจเฉฑเจ เจฌเจฐเจเจฐเจพเจฐ /usr/src/ เจเฉเจฐเฉ เจธเฉ เจเจฟเจธ เจตเจฟเฉฑเจ เจเจผเจฟเจเจฆเจพเจคเจฐ เจซเจพเจเจฒเจพเจ เจจเฉเฉฐ เจธเจพเจฒ 1979 เจฆเฉ เจจเจพเจฒ เจฒเฉเจฌเจฒ เจเฉเจคเจพ เจเจฟเจ เจธเฉ, เจเฉ เจเจฟ เจเจฆเฉเจ เจตเฉ เจชเฉเจฐเจพเจเฉเจจ เจฆเจฟเจเจพเจ เจฆเจฟเฉฐเจฆเจพ เจธเฉเฅค เจเจน เจธเฉฑเจคเจตเจพเจ เจเจกเฉเจธเจผเจจ เจธเฉ เจเจพเจ เจเจธเจฆเจพ เจกเฉเจฐเฉเจตเฉเจเจฟเจต PWB, เจเจฟเจตเฉเจ เจเจฟ เจฎเฉเจ เจตเจฟเจธเจผเจตเจพเจธ เจเฉเจคเจพ เจธเฉเฅค
เจฎเฉเจ เจเฉเจ เจจเฉเฉฐ เจเฉฑเจ เจ เจงเจพเจฐ เจตเจเฉเจ เจฒเจฟเจ เจ เจคเฉ เจเฉเจตเฉเจ เจเจกเฉเจธเจผเจจ เจตเจฟเฉฑเจ เจธเจฐเฉเจคเจพเจ เจจเฉเฉฐ เจนเฉฑเจฅเฉเจ เจธเฉฐเจชเจพเจฆเจฟเจค เจเฉเจคเจพเฅค เจเฉเจ เจเฉเจก เจเฉฑเจเฉ เจเจฟเจนเฉ เจฐเจนเฉ, เจชเจฐ เจเฉเจ เจจเฉเฉฐ เจฅเฉเฉเฉเจนเจพ เจธเฉฐเจชเจพเจฆเจฟเจค เจเจฐเจจเจพ เจชเจฟเจ, เจเจงเฉเจจเจฟเจ += เจเฉเจเจจ เจจเฉเฉฐ เจชเฉเจฐเจพเจฃเฉ =+ เจตเจฟเฉฑเจ เจฌเจฆเจฒเจฃเจพเฅค เจเฉเจ เจเฉเจเจผเจพเจ เจจเฉเฉฐ เจธเจฟเจฐเจซเจผ เจฎเจฟเจเจพ เจฆเจฟเฉฑเจคเจพ เจเจฟเจ เจธเฉ, เจ เจคเฉ เจเฉเจ เจจเฉเฉฐ เจชเฉเจฐเฉ เจคเจฐเฉเจนเจพเจ เจฆเฉเจฌเจพเจฐเจพ เจฒเจฟเจเจฃเจพ เจชเจฟเจ, เจชเจฐ เจฌเจนเฉเจค เจเจผเจฟเจเจฆเจพ เจจเจนเฉเจเฅค
เจ
เจคเฉ เจ
เฉฑเจ เจ
เจธเฉเจ TUHS 'เจคเฉ เจเฉเจตเฉเจ เจเจกเฉเจธเจผเจจ เจฆเจพ เจธเจฐเฉเจค เจเฉเจก เจเจจเจฒเจพเจเจจ เจชเฉเฉเจน เจธเจเจฆเฉ เจนเจพเจ
เจคเจฐเฉเจเฉ เจจเจพเจฒ, เจชเจนเจฟเจฒเฉ เจจเจเจผเจฐ 'เจคเฉ, เจเฉเจฐเจจเฉเจเจจ เจ เจคเฉ เจฐเจฟเจเฉ เจฆเฉ เจฎเจฟเจเจฆ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ เจธเฉ-เจเฉเจก เจฆเฉ เจฎเฉเฉฑเจ เจตเจฟเจธเจผเฉเจธเจผเจคเจพ เจเจน เจนเฉ เจธเฉฐเจเฉเจชเจคเจพ. เจเจน เจ เจเจธเจฐ เจจเจนเฉเจ เจนเฉเฉฐเจฆเจพ เจนเฉ เจเจฟ เจฎเฉเจ เจเจชเจฃเฉ เจธเจพเจเจ 'เจคเฉ เจเฉฑเจ เจฎเฉเจเจพเจฌเจฒเจคเจจ เจคเฉฐเจ เจกเจฟเจธเจชเจฒเฉ เจเฉเจคเจฐ เจจเฉเฉฐ เจซเจฟเฉฑเจ เจเจฐเจจ เจฒเจ เจตเจฟเจเจชเจ เจธเฉฐเจชเจพเจฆเจจ เจฆเฉ เจฌเจฟเจจเจพเจ เจเฉเจก เจฆเฉ เจเฉเจเฉเฉ เจธเจผเจพเจฎเจฒ เจเจฐเจจ เจฆเฉ เจฏเฉเจ เจนเจพเจ.
เจธเจผเฉเจฐเฉ เจตเจฟเฉฑเจ
/*
* Max allowable buffering per pipe.
* This is also the max size of the
* file created to implement the pipe.
* If this size is bigger than 4096,
* pipes will be implemented in LARG
* files, which is probably not good.
*/
#define PIPSIZ 4096
เจเฉเจฅเฉ เจเจกเฉเจธเจผเจจ เจคเฉเจ เจฌเจพเจ เจฆ เจฌเจซเจฐ เจฆเจพ เจเจเจพเจฐ เจจเจนเฉเจ เจฌเจฆเจฒเจฟเจ เจนเฉเฅค เจชเจฐ เจเฉฑเจฅเฉ เจ เจธเฉเจ เจฆเฉเจเจฆเฉ เจนเจพเจ, เจฌเจฟเจจเจพเจ เจเจฟเจธเฉ เจเจจเจคเจ เจฆเจธเจคเจพเจตเฉเจเจผ เจฆเฉ, เจชเจพเจเจชเจฒเจพเจเจจเจพเจ เจจเฉ เจเฉฑเจ เจตเจพเจฐ เจฌเฉเจเจ เจช เจธเจเฉเจฐเฉเจ เจตเจเฉเจ เจซเจพเจเจฒเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเฉเจคเฉ!
เจเจฟเจตเฉเจ เจเจฟ LARG เจซเจพเจเจฒเจพเจ เจฒเจ, เจเจน เจเจธเจฆเฉ เจ
เจจเฉเจธเจพเจฐเฉ เจนเจจ
เจเฉฑเจฅเฉ เจ
เจธเจฒเฉ เจธเจฟเจธเจเจฎ เจเจพเจฒ เจนเฉ pipe
:
/*
* The sys-pipe entry.
* Allocate an inode on the root device.
* Allocate 2 file structures.
* Put it all together with flags.
*/
pipe()
{
register *ip, *rf, *wf;
int r;
ip = ialloc(rootdev);
if(ip == NULL)
return;
rf = falloc();
if(rf == NULL) {
iput(ip);
return;
}
r = u.u_ar0[R0];
wf = falloc();
if(wf == NULL) {
rf->f_count = 0;
u.u_ofile[r] = NULL;
iput(ip);
return;
}
u.u_ar0[R1] = u.u_ar0[R0]; /* wf's fd */
u.u_ar0[R0] = r; /* rf's fd */
wf->f_flag = FWRITE|FPIPE;
wf->f_inode = ip;
rf->f_flag = FREAD|FPIPE;
rf->f_inode = ip;
ip->i_count = 2;
ip->i_flag = IACC|IUPD;
ip->i_mode = IALLOC;
}
เจเจฟเฉฑเจชเจฃเฉ เจธเจชเจธเจผเจ เจคเฉเจฐ 'เจคเฉ เจฆเฉฑเจธเจฆเฉ เจนเฉ เจเจฟ เจเฉฑเจฅเฉ เจเฉ เจนเฉ เจฐเจฟเจนเจพ เจนเฉเฅค เจชเจฐ เจเฉเจก เจจเฉเฉฐ เจธเจฎเจเจฃเจพ เจเฉฐเจจเจพ เจเจธเจพเจจ เจจเจนเฉเจ เจนเฉ, เจ
เฉฐเจธเจผเจ เจคเฉเจฐ 'เจคเฉ เจคเจฐเฉเจเฉ เจจเจพเจฒ "R0
ะธ R1
เจธเจฟเจธเจเจฎ เจเจพเจฒ เจชเฉเจฐเจพเจฎเฉเจเจฐ เจ
เจคเฉ เจตเจพเจชเจธเฉ เจฎเฉเฉฑเจฒ เจชเจพเจธ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเจจเฅค
เจฆเฉ เจจเจพเจฒ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเฉเจ
pipe()
เจฆเฉเจเจฐเจพ เจเจฐเจจเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ R0
ะธ R1
เจชเฉเฉเจนเจจ เจ
เจคเฉ เจฒเจฟเจเจฃ เจฒเจ เจซเจพเจเจฒ เจกเจฟเจธเจเฉเจฐเจฟเจชเจเจฐ เจจเฉฐเจฌเจฐ เจตเจพเจชเจธ เจเจฐเฉเฅค falloc()
เจซเจพเจเจฒ เจขเจพเจเจเฉ เจฒเจ เจเฉฑเจ เจชเฉเจเจเฉฐเจเจฐ เจตเจพเจชเจธ เจเจฐเจฆเจพ เจนเฉ, เจชเจฐ เจฐเจพเจนเฉเจ "เจตเจพเจชเจธเฉ" เจตเฉ เจเจฐเจฆเจพ เจนเฉ u.u_ar0[R0]
เจ
เจคเฉ เจเฉฑเจ เจซเจพเจเจฒ เจกเจฟเจธเจเฉเจฐเจฟเจชเจเจฐเฅค เจญเจพเจต, เจเฉเจก เจตเจฟเฉฑเจ เจฌเจเจฆเจพ เจนเฉ r
เจชเฉเฉเจนเจจ เจฒเจ เจซเจพเจเจฒ เจกเจฟเจธเจเฉเจฐเจฟเจชเจเจฐ เจ
เจคเฉ เจธเจฟเฉฑเจงเฉ เจคเฉเจ เจฒเจฟเจเจฃ เจฒเจ เจเฉฑเจ เจซเจพเจเจฒ เจกเจฟเจธเจเฉเจฐเจฟเจชเจเจฐ เจจเจฟเจฐเจงเจพเจฐเจค เจเจฐเจฆเจพ เจนเฉ u.u_ar0[R0]
เจฆเฉเจเฉ เจเจพเจฒ เจฆเฉ เจฌเจพเจ
เจฆ falloc()
.
เจซเจฒเฉเจ FPIPE
, เจเฉ เจ
เจธเฉเจ เจชเจพเจเจชเจฒเจพเจเจจ เจฌเจฃเจพเจเจฃ เจตเฉเจฒเฉ เจธเฉเจ เจเจฐเจฆเฉ เจนเจพเจ, เจซเฉฐเจเจธเจผเจจ เจฆเฉ เจตเจฟเจตเจนเจพเจฐ เจจเฉเฉฐ เจจเจฟเจฏเฉฐเจคเจฐเจฟเจค เจเจฐเจฆเจพ เจนเฉ
/*
* common code for read and write calls:
* check permissions, set base, count, and offset,
* and switch out to readi, writei, or pipe code.
*/
rdwr(mode)
{
register *fp, m;
m = mode;
fp = getf(u.u_ar0[R0]);
/* โฆ */
if(fp->f_flag&FPIPE) {
if(m==FREAD)
readp(fp); else
writep(fp);
}
/* โฆ */
}
เจซเจฟเจฐ เจซเฉฐเจเจธเจผเจจ readp()
ะฒ pipe.c
เจชเจพเจเจชเจฒเจพเจเจจ เจคเฉเจ เจกเจพเจเจพ เจชเฉเฉเจนเจฆเจพ เจนเฉเฅค เจชเจฐ เจเจธ เจคเฉเจ เจธเจผเฉเจฐเฉ เจนเฉ เจเฉ เจฒเจพเจเฉ เจเจฐเจจ เจฆเจพ เจชเจคเจพ เจฒเจเจพเจเจฃเจพ เจฌเจฟเจนเจคเจฐ เจนเฉ writep()
. เจฆเฉเจฌเจพเจฐเจพ, เจเจฐเจเฉเจฎเฉเจเจเจพเจ เจจเฉเฉฐ เจชเจพเจธ เจเจฐเจจ เจฆเฉ เจธเฉฐเจฎเฉเจฒเจจเจพเจ เจเจพเจฐเจจ เจเฉเจก เจตเจงเฉเจฐเฉ เจเฉเฉฐเจเจฒเจฆเจพเจฐ เจฌเจฃ เจเจฟเจ เจนเฉ, เจชเจฐ เจเฉเจ เจตเฉเจฐเจตเจฟเจเจ เจจเฉเฉฐ เจเฉฑเจกเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค
writep(fp)
{
register *rp, *ip, c;
rp = fp;
ip = rp->f_inode;
c = u.u_count;
loop:
/* If all done, return. */
plock(ip);
if(c == 0) {
prele(ip);
u.u_count = 0;
return;
}
/*
* If there are not both read and write sides of the
* pipe active, return error and signal too.
*/
if(ip->i_count < 2) {
prele(ip);
u.u_error = EPIPE;
psignal(u.u_procp, SIGPIPE);
return;
}
/*
* If the pipe is full, wait for reads to deplete
* and truncate it.
*/
if(ip->i_size1 == PIPSIZ) {
ip->i_mode =| IWRITE;
prele(ip);
sleep(ip+1, PPIPE);
goto loop;
}
/* Write what is possible and loop back. */
u.u_offset[0] = 0;
u.u_offset[1] = ip->i_size1;
u.u_count = min(c, PIPSIZ-u.u_offset[1]);
c =- u.u_count;
writei(ip);
prele(ip);
if(ip->i_mode&IREAD) {
ip->i_mode =& ~IREAD;
wakeup(ip+2);
}
goto loop;
}
เจ
เจธเฉเจ เจชเจพเจเจชเจฒเจพเจเจจ เจเจจเจชเฉเจ 'เจคเฉ เจฌเจพเจเจเจธ เจฒเจฟเจเจฃเจพ เจเจพเจนเฉเฉฐเจฆเฉ เจนเจพเจ u.u_count
. เจชเจนเจฟเจฒเจพเจ เจธเจพเจจเฉเฉฐ เจเจจเฉเจก เจจเฉเฉฐ เจฒเจพเจ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉ (เจนเฉเจ เจพเจ เจฆเฉเจเฉ plock
/prele
).
เจซเจฟเจฐ เจ
เจธเฉเจ เจเจจเฉเจก เจฐเฉเจซเจฐเฉเจเจธ เจเจพเจเจเจเจฐ เจฆเฉ เจเจพเจเจ เจเจฐเจฆเฉ เจนเจพเจเฅค เจเจฟเฉฐเจจเจพ เจเจฟเจฐ เจชเจพเจเจชเจฒเจพเจเจจ เจฆเฉ เจฆเฉเจตเฉเจ เจธเจฟเจฐเฉ เจเฉเฉฑเจฒเฉเจนเฉ เจฐเจนเจฟเฉฐเจฆเฉ เจนเจจ, เจเจพเจเจเจเจฐ 2 เจฆเฉ เจฌเจฐเจพเจฌเจฐ เจนเฉเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉเฅค เจ
เจธเฉเจ เจเฉฑเจ เจฒเจฟเฉฐเจ เจฐเฉฑเจเจฆเฉ เจนเจพเจ (เจคเฉเจ rp->f_inode
), เจเจธ เจฒเจ เจเฉเจเจฐ เจเจพเจเจเจเจฐ 2 เจคเฉเจ เจเฉฑเจ เจนเฉ, เจคเจพเจ เจเจธเจฆเจพ เจฎเจคเจฒเจฌ เจเจน เจนเฉเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ เจเจฟ เจฐเฉเจกเจฟเฉฐเจ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจจเฉ เจชเจพเจเจชเจฒเจพเจเจจ เจฆเฉ เจเจชเจฃเฉ เจ
เฉฐเจค เจจเฉเฉฐ เจฌเฉฐเจฆ เจเจฐ เจฆเจฟเฉฑเจคเจพ เจนเฉเฅค เจฆเฉเจเฉ เจธเจผเจฌเจฆเจพเจ เจตเจฟเฉฑเจ, เจ
เจธเฉเจ เจเฉฑเจ เจฌเฉฐเจฆ เจชเจพเจเจชเจฒเจพเจเจจ เจจเฉเฉฐ เจฒเจฟเจเจฃ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐ เจฐเจนเฉ เจนเจพเจ, เจ
เจคเฉ เจเจน เจเฉฑเจ เจเจฒเจคเฉ เจนเฉเฅค เจชเจนเจฟเจฒเฉ เจตเจพเจฐ เจเจฒเจคเฉ เจเฉเจก EPIPE
เจ
เจคเฉ เจธเจฟเจเจจเจฒ SIGPIPE
เจฏเฉเจจเจฟเจเจธ เจฆเฉ เจเฉเจตเฉเจ เจเจกเฉเจธเจผเจจ เจตเจฟเฉฑเจ เจชเฉเจฐเจเจ เจนเฉเจเจเฅค
เจชเจฐ เจญเจพเจตเฉเจ เจเจจเจตเฉเจ เจฐ เจเฉเฉฑเจฒเฉเจนเจพ เจนเฉ, เจเจน เจญเจฐเจฟเจ เจนเฉ เจธเจเจฆเจพ เจนเฉ. เจเจธ เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ, เจ เจธเฉเจ เจฒเจพเจ เจจเฉเฉฐ เจเฉฑเจก เจฆเจฟเฉฐเจฆเฉ เจนเจพเจ เจ เจคเฉ เจเจธ เจเจฎเฉเจฆ เจตเจฟเฉฑเจ เจธเฉเจ เจเจพเจเจฆเฉ เจนเจพเจ เจเจฟ เจเฉฑเจ เจนเฉเจฐ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจชเจพเจเจชเจฒเจพเจเจจ เจคเฉเจ เจชเฉเฉเจนเฉเจเฉ เจ เจคเฉ เจเจธ เจตเจฟเฉฑเจ เจเจพเจซเจผเฉ เจเจเฉเจนเจพ เจเจพเจฒเฉ เจเจฐ เจฆเฉเจตเฉเจเฉเฅค เจเจพเจเจฃ เจคเฉเจ เจฌเจพเจ เจฆ, เจ เจธเฉเจ เจธเจผเฉเจฐเฉเจเจค 'เจคเฉ เจตเจพเจชเจธ เจเจเจเจฆเฉ เจนเจพเจ, เจฒเจพเจ เจจเฉเฉฐ เจฆเฉเจฌเจพเจฐเจพ เจฒเจเจเจพเจเจเจฆเฉ เจนเจพเจ เจ เจคเฉ เจเฉฑเจ เจจเจตเจพเจ เจฐเจฟเจเจพเจฐเจกเจฟเฉฐเจ เจเฉฑเจเจฐ เจธเจผเฉเจฐเฉ เจเจฐเจฆเฉ เจนเจพเจเฅค
เจเฉเจเจฐ เจชเจพเจเจชเจฒเจพเจเจจ เจตเจฟเฉฑเจ เจเจพเจซเจผเฉ เจเจพเจฒเฉ เจฅเจพเจ เจนเฉ, เจคเจพเจ เจ
เจธเฉเจ เจเจธเจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจกเฉเจเจพ เจฒเจฟเจเจฆเฉ เจนเจพเจ i_size1
inode (เจเฉ เจชเจพเจเจชเจฒเจพเจเจจ เจเจพเจฒเฉ เจนเฉ เจคเจพเจ เจเจน 0 เจฆเฉ เจฌเจฐเจพเจฌเจฐ เจนเฉ เจธเจเจฆเฉ เจนเฉ) เจเจธ เจกเฉเจเจพ เจฆเฉ เจ
เฉฐเจค เจจเฉเฉฐ เจฆเจฐเจธเจพเจเจเจฆเฉ เจนเฉ เจเฉ เจเจธ เจตเจฟเฉฑเจ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจฎเฉเจเฉเจฆ เจนเฉเฅค เจเฉ เจเฉฑเจฅเฉ เจเจพเจซเจผเฉ เจฐเจฟเจเจพเจฐเจกเจฟเฉฐเจ เจธเจชเฉเจธ เจนเฉ, เจคเจพเจ เจ
เจธเฉเจ เจชเจพเจเจชเจฒเจพเจเจจ เจจเฉเฉฐ เจญเจฐ เจธเจเจฆเฉ เจนเจพเจ i_size1
เจจเฉเฉฐ PIPESIZ
. เจซเจฟเจฐ เจ
เจธเฉเจ เจฒเจพเจ เจจเฉเฉฐ เจเฉฑเจก เจฆเจฟเฉฐเจฆเฉ เจนเจพเจ เจ
เจคเฉ เจเจฟเจธเฉ เจตเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจจเฉเฉฐ เจเจเจพเจเจฃ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเจฆเฉ เจนเจพเจ เจเฉ เจชเจพเจเจชเจฒเจพเจเจจ เจคเฉเจ เจชเฉเฉเจนเจจ เจฆเฉ เจเจกเฉเจ เจเจฐ เจฐเจฟเจนเจพ เจนเฉ. เจ
เจธเฉเจ เจเจน เจฆเฉเจเจฃ เจฒเจ เจธเจผเฉเจฐเฉ เจตเจฟเฉฑเจ เจตเจพเจชเจธ เจเจพเจเจฆเฉ เจนเจพเจ เจเจฟ เจเฉ เจ
เจธเฉเจ เจฒเฉเฉเฉเจเจฆเฉ เจฌเจพเจเจเจพเจ เจจเฉเฉฐ เจฒเจฟเจเจฃ เจฆเฉ เจฏเฉเจ เจธเฉ เจเจพเจ เจจเจนเฉเจเฅค เจเฉเจเจฐ เจเจน เจ
เจธเจซเจฒ เจนเฉ เจเจพเจเจฆเจพ เจนเฉ, เจคเจพเจ เจ
เจธเฉเจ เจเฉฑเจ เจจเจตเจพเจ เจฐเจฟเจเจพเจฐเจกเจฟเฉฐเจ เจเฉฑเจเจฐ เจธเจผเฉเจฐเฉ เจเจฐเจฆเฉ เจนเจพเจเฅค
เจเจฎ เจคเฉเจฐ 'เจคเฉ เจชเฉเจฐเจพเจฎเฉเจเจฐ i_mode
inode เจฆเฉ เจตเจฐเจคเฉเจ เจเจเจพเจเจผเจคเจพเจ เจจเฉเฉฐ เจธเจเฉเจฐ เจเจฐเจจ เจฒเจ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ r
, w
ะธ x
. เจชเจฐ เจชเจพเจเจชเจฒเจพเจเจจเจพเจ เจฆเฉ เจฎเจพเจฎเจฒเฉ เจตเจฟเฉฑเจ, เจ
เจธเฉเจ เจธเฉฐเจเฉเจค เจฆเจฟเฉฐเจฆเฉ เจนเจพเจ เจเจฟ เจเฉเจ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจฌเจฟเฉฑเจเจพเจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจฒเจฟเจเจฃ เจเจพเจ เจชเฉเฉเจนเจจ เจฆเฉ เจเจกเฉเจ เจเจฐ เจฐเจนเฉ เจนเฉ IREAD
ะธ IWRITE
เจเฉเจฐเจฎเจตเจพเจฐ. เจชเฉเจฐเจเจฟเจฐเจฟเจ เจซเจฒเฉเจ เจ
เจคเฉ เจเจพเจฒเจพเจ เจจเฉเฉฐ เจธเฉเฉฑเจ เจเจฐเจฆเฉ เจนเฉ sleep()
, เจ
เจคเฉ เจเจน เจเจฎเฉเจฆ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ เจเจฟ เจญเจตเจฟเฉฑเจ เจตเจฟเฉฑเจ เจเจฟเจธเฉ เจนเฉเจฐ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจฆเจพ เจเจพเจฐเจจ เจฌเจฃเฉเจเจพ wakeup()
.
เจ
เจธเจฒเฉ เจเจพเจฆเฉ เจตเจฟเฉฑเจ เจตเจพเจชเจฐเจฆเจพ เจนเฉ sleep()
ะธ wakeup()
. เจตเจฟเฉฑเจ เจฒเจพเจเฉ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเจจ
/*
* Give up the processor till a wakeup occurs
* on chan, at which time the process
* enters the scheduling queue at priority pri.
* The most important effect of pri is that when
* pri<0 a signal cannot disturb the sleep;
* if pri>=0 signals will be processed.
* Callers of this routine must be prepared for
* premature return, and check that the reason for
* sleeping has gone away.
*/
sleep(chan, pri) /* โฆ */
/*
* Wake up all processes sleeping on chan.
*/
wakeup(chan) /* โฆ */
เจชเฉเจฐเจเจฟเจฐเจฟเจ เจเฉ เจเจพเจฐเจจ เจฌเจฃเจฆเฉ เจนเฉ sleep()
เจเฉฑเจ เจเจพเจธ เจเฉเจจเจฒ เจฒเจ, เจฌเจพเจ
เจฆ เจตเจฟเฉฑเจ เจเจฟเจธเฉ เจนเฉเจฐ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจฆเฉเจเจฐเจพ เจเจเจพเจเจ เจเจพ เจธเจเจฆเจพ เจนเฉ, เจเจฟเจธเจฆเจพ เจเจพเจฐเจจ เจนเฉเจตเฉเจเจพ wakeup()
เจเจธเฉ เจเฉเจจเจฒ เจฒเจเฅค writep()
ะธ readp()
เจ
เจเจฟเจนเฉเจเจ เจชเฉเจ
เจฐเจก เจเจพเจฒเจพเจ เจฐเจพเจนเฉเจ เจเจนเจจเจพเจ เจฆเฉเจเจ เจเจพเจฐเจตเจพเจเจเจ เจฆเจพ เจคเจพเจฒเจฎเฉเจฒ เจเจฐเฉเฅค เจจเฉเจ เจเจฐเฉ pipe.c
เจนเจฎเฉเจธเจผเจพ เจชเจนเจฟเจฒ เจฆเจฟเฉฐเจฆเจพ เจนเฉ PPIPE
เจเจฆเฉเจ เจฌเฉเจฒเจพเจเจ เจเจพเจเจฆเจพ เจนเฉ sleep()
, เจเจธ เจฒเจ เจเจน เจนเฉ sleep()
เจเฉฑเจ เจธเจฟเจเจจเจฒ เจฆเฉเจเจฐเจพ เจฐเฉเจเจพเจตเจ เจนเฉ เจธเจเจฆเฉ เจนเฉเฅค
เจนเฉเจฃ เจธเจพเจกเฉ เจเฉเจฒ เจซเฉฐเจเจธเจผเจจ เจจเฉเฉฐ เจธเจฎเจเจฃ เจฒเจ เจธเจญ เจเฉเจ เจนเฉ readp()
:
readp(fp)
int *fp;
{
register *rp, *ip;
rp = fp;
ip = rp->f_inode;
loop:
/* Very conservative locking. */
plock(ip);
/*
* If the head (read) has caught up with
* the tail (write), reset both to 0.
*/
if(rp->f_offset[1] == ip->i_size1) {
if(rp->f_offset[1] != 0) {
rp->f_offset[1] = 0;
ip->i_size1 = 0;
if(ip->i_mode&IWRITE) {
ip->i_mode =& ~IWRITE;
wakeup(ip+1);
}
}
/*
* If there are not both reader and
* writer active, return without
* satisfying read.
*/
prele(ip);
if(ip->i_count < 2)
return;
ip->i_mode =| IREAD;
sleep(ip+2, PPIPE);
goto loop;
}
/* Read and return */
u.u_offset[0] = 0;
u.u_offset[1] = rp->f_offset[1];
readi(ip);
rp->f_offset[1] = u.u_offset[1];
prele(ip);
}
เจคเฉเจนเจพเจจเฉเฉฐ เจเจธ เจซเฉฐเจเจธเจผเจจ เจจเฉเฉฐ เจนเฉเจ เจพเจ เจคเฉเจ เจเฉฑเจชเจฐ เจคเฉฑเจ เจชเฉเฉเจนเจจเจพ เจเจธเจพเจจ เจฒเฉฑเจ เจธเจเจฆเจพ เจนเฉเฅค "เจชเฉเฉเจนเฉ เจ
เจคเฉ เจตเจพเจชเจธ" เจธเจผเจพเจเจพ เจเจฎ เจคเฉเจฐ 'เจคเฉ เจเจฆเฉเจ เจตเจฐเจคเฉ เจเจพเจเจฆเฉ เจนเฉ เจเจฆเฉเจ เจชเจพเจเจชเจฒเจพเจเจจ เจตเจฟเฉฑเจ เจเฉเจ เจกเฉเจเจพ เจนเฉเฉฐเจฆเจพ เจนเฉเฅค เจเจธ เจเฉเจธ เจตเจฟเฉฑเจ, เจ
เจธเฉเจ เจตเจฐเจคเจฆเฉ เจนเจพเจ f_offset
เจชเฉเฉเจนเฉ, เจ
เจคเฉ เจซเจฟเจฐ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจเจซเจธเฉเฉฑเจ เจฆเฉ เจฎเฉเฉฑเจฒ เจจเฉเฉฐ เจ
เจชเจกเฉเจ เจเจฐเฉเฅค
เจฌเจพเจ
เจฆ เจฆเฉ เจฐเฉเจกเจเจผ 'เจคเฉ, เจชเจพเจเจชเจฒเจพเจเจจ เจเจพเจฒเฉ เจนเฉ เจเจพเจตเฉเจเฉ เจเฉเจเจฐ เจฐเฉเจก เจเจซเจธเฉเฉฑเจ เจชเจนเฉเฉฐเจ เจเจฟเจ เจนเฉ i_size1
inode 'เจคเฉ. เจ
เจธเฉเจ เจธเจฅเจฟเจคเฉ เจจเฉเฉฐ 0 เจคเฉ เจฐเฉเจธเฉเจ เจเจฐเจฆเฉ เจนเจพเจ เจ
เจคเฉ เจเจฟเจธเฉ เจตเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจจเฉเฉฐ เจเจเจพเจเจฃ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเจฆเฉ เจนเจพเจ เจเฉ เจชเจพเจเจชเจฒเจพเจเจจ เจจเฉเฉฐ เจฒเจฟเจเจฃเจพ เจเจพเจนเฉเฉฐเจฆเจพ เจนเฉ. เจ
เจธเฉเจ เจเจพเจฃเจฆเฉ เจนเจพเจ เจเจฟ เจเจฆเฉเจ เจเจจเจตเฉเจ
เจฐ เจญเจฐ เจเจพเจเจฆเจพ เจนเฉ, writep()
'เจคเฉ เจธเฉเจ เจเจพเจตเฉเจเจพ ip+1
. เจ
เจคเฉ เจนเฉเจฃ เจเจฆเฉเจ เจชเจพเจเจชเจฒเจพเจเจจ เจเจพเจฒเฉ เจนเฉ, เจ
เจธเฉเจ เจเจธเจจเฉเฉฐ เจฒเจฟเจเจฃ เจฆเฉ เจเฉฑเจเจฐ เจจเฉเฉฐ เจฎเฉเฉ เจธเจผเฉเจฐเฉ เจเจฐเจจ เจฒเจ เจเจเจพ เจธเจเจฆเฉ เจนเจพเจเฅค
เจเฉ เจคเฉเจนเจพเจกเฉ เจเฉเจฒ เจชเฉเฉเจนเจจ เจฒเจ เจเฉเจ เจจเจนเฉเจ เจนเฉ, เจคเจพเจ readp()
เจเฉฐเจกเจพ เจธเฉเฉฑเจ เจเจฐ เจธเจเจฆเจพ เจนเฉ IREAD
เจ
เจคเฉ เจธเฉเจ เจเจพเจ ip+2
. เจ
เจธเฉเจ เจเจพเจฃเจฆเฉ เจนเจพเจ เจเจฟ เจเจธ เจจเฉเฉฐ เจเฉ เจเจเจพเจเจเจพ writep()
, เจเจฆเฉเจ เจเจน เจชเจพเจเจชเจฒเจพเจเจจ เจจเฉเฉฐ เจเฉเจ เจกเฉเจเจพ เจฒเจฟเจเจฆเจพ เจนเฉเฅค
เจฒเจ เจเจฟเฉฑเจชเจฃเฉเจเจ u
"เจ
เจธเฉเจ เจเจนเจจเจพเจ เจจเฉเฉฐ เจเจฎ I/O เจซเฉฐเจเจธเจผเจจเจพเจ เจตเจพเจเจ เจตเจฐเจค เจธเจเจฆเฉ เจนเจพเจ เจเฉ เจเฉฑเจ เจซเจพเจเจฒ, เจเฉฑเจ เจธเจฅเจฟเจคเฉ, เจฎเฉเจฎเฉเจฐเฉ เจตเจฟเฉฑเจ เจเฉฑเจ เจฌเจซเจฐ เจฒเฉเจเจฆเฉ เจนเจจ, เจ
เจคเฉ เจชเฉเฉเจนเจจ เจเจพเจ เจฒเจฟเจเจฃ เจฒเจ เจฌเจพเจเจเจพเจ เจฆเฉ เจเจฟเจฃเจคเฉ เจเจฐเจฆเฉ เจนเจจเฅค
/*
* Read the file corresponding to
* the inode pointed at by the argument.
* The actual read arguments are found
* in the variables:
* u_base core address for destination
* u_offset byte offset in file
* u_count number of bytes to read
* u_segflg read to kernel/user
*/
readi(aip)
struct inode *aip;
/* โฆ */
/*
* Write the file corresponding to
* the inode pointed at by the argument.
* The actual write arguments are found
* in the variables:
* u_base core address for source
* u_offset byte offset in file
* u_count number of bytes to write
* u_segflg write to kernel/user
*/
writei(aip)
struct inode *aip;
/* โฆ */
เจเจฟเจตเฉเจ เจเจฟ "เจฐเฉเฉเฉเจตเจพเจฆเฉ" เจฌเจฒเจพเจเจฟเฉฐเจ เจฒเจ, เจซเจฟเจฐ readp()
ะธ writep()
เจเจเจจเฉเจก เจจเฉเฉฐ เจเจฆเฉเจ เจคเฉฑเจ เจฌเจฒเฉเจ เจเจฐเฉ เจเจฆเฉเจ เจคเฉฑเจ เจเจน เจเจชเจฃเจพ เจเฉฐเจฎ เจชเฉเจฐเจพ เจจเจนเฉเจ เจเจฐ เจฒเฉเจเจฆเฉ เจเจพเจ เจจเจคเฉเจเจพ เจชเฉเจฐเจพเจชเจค เจจเจนเฉเจ เจเจฐเจฆเฉ (เจญเจพเจต, เจเจพเจฒ เจเจฐเฉ wakeup
). plock()
ะธ prele()
เจฌเจธ เจเฉฐเจฎ เจเจฐเฉ: เจเจพเจฒเจพเจ เจฆเจพ เจเฉฑเจ เจตเฉฑเจเจฐเจพ เจธเฉเฉฑเจ เจตเจฐเจค เจเฉ sleep
ะธ wakeup
เจธเจพเจจเฉเฉฐ เจเจฟเจธเฉ เจตเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจจเฉเฉฐ เจเจเจพเจเจฃ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉ เจเจฟเจธ เจฒเจ เจฒเจพเจ เจฆเฉ เจฒเฉเฉ เจนเฉ เจเฉ เจ
เจธเฉเจ เจนเฉเจฃเฉ เจเจพเจฐเฉ เจเฉเจคเจพ เจนเฉ:
/*
* Lock a pipe.
* If its already locked, set the WANT bit and sleep.
*/
plock(ip)
int *ip;
{
register *rp;
rp = ip;
while(rp->i_flag&ILOCK) {
rp->i_flag =| IWANT;
sleep(rp, PPIPE);
}
rp->i_flag =| ILOCK;
}
/*
* Unlock a pipe.
* If WANT bit is on, wakeup.
* This routine is also used to unlock inodes in general.
*/
prele(ip)
int *ip;
{
register *rp;
rp = ip;
rp->i_flag =& ~ILOCK;
if(rp->i_flag&IWANT) {
rp->i_flag =& ~IWANT;
wakeup(rp);
}
}
เจชเจนเจฟเจฒเจพเจ เจคเจพเจ เจฎเฉเจ เจธเจฎเจ เจจเจนเฉเจ เจธเจเจฟเจ เจเจฟ เจเจฟเจเจ readp()
เจฆเจพ เจเจพเจฐเจจ เจจเจนเฉ เจนเฉ prele(ip)
เจเจพเจฒ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ wakeup(ip+1)
. เจชเจนเจฟเจฒเฉ เจเฉฑเจฒ เจเจน เจนเฉ เจเจฟ writep()
เจเจธ เจฆเฉ เจเฉฑเจเจฐ เจตเจฟเฉฑเจ เจเจพเจฐเจจ, เจเจน plock(ip)
, เจเฉ เจกเฉเฉฑเจกเจฒเจพเจ เจฆเฉ เจ
เจเจตเจพเจ เจเจฐเจฆเจพ เจนเฉ if readp()
เจ
เจเฉ เจคเฉฑเจ เจฎเฉเจฐเฉ เจฌเจฒเจพเจ เจจเฉเฉฐ เจจเจนเฉเจ เจนเจเจพเจเจ เจนเฉ, เจเจธ เจฒเจ เจเจฟเจธเฉ เจคเจฐเฉเจนเจพเจ เจเฉเจก เจจเฉเฉฐ เจธเจนเฉ เจขเฉฐเจ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจจเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ. เจเฉ เจคเฉเจธเฉเจ เจฆเฉเจเจฆเฉ เจนเฉ wakeup()
, เจซเจฟเจฐ เจเจน เจธเจชเฉฑเจธเจผเจ เจนเฉ เจเจพเจเจฆเจพ เจนเฉ เจเจฟ เจเจน เจธเจฟเจฐเจซ เจธเจฒเฉเจชเจฟเฉฐเจ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจจเฉเฉฐ เจเจฒเจพเจเจฃ เจฒเจ เจคเจฟเจเจฐ เจตเจเฉเจ เจเจฟเฉฐเจจเฉเจนเจฟเจค เจเจฐเจฆเจพ เจนเฉ, เจคเจพเจ เจเฉ เจญเจตเจฟเฉฑเจ เจตเจฟเฉฑเจ sched()
เจ
เจธเจฒ เจตเจฟเฉฑเจ เจเจธ เจจเฉเฉฐ เจธเจผเฉเจฐเฉ เจเฉเจคเจพ. เจเจธ เจฒเจ readp()
เจเจพเจฐเจจ wakeup()
, เจฒเจพเจ เจจเฉเฉฐ เจนเจเจพเจเจเจฆเจพ เจนเฉ, เจธเฉเฉฑเจ เจเจฐเจฆเจพ เจนเฉ IREAD
เจ
เจคเฉ เจเจพเจฒเจพเจ sleep(ip+2)
- เจเจน เจธเจญ เจชเจนเจฟเจฒเจพเจ writep()
เจเฉฑเจเจฐ เจฎเฉเฉ เจธเจผเฉเจฐเฉ เจเจฐเจฆเจพ เจนเฉเฅค
เจเจน เจเฉเจตเฉเจ เจเจกเฉเจธเจผเจจ เจตเจฟเฉฑเจ เจเจจเจตเฉเจ เจฐเจพเจ เจฆเฉ เจตเจฐเจฃเจจ เจจเฉเฉฐ เจชเฉเจฐเจพ เจเจฐเจฆเจพ เจนเฉเฅค เจธเจงเจพเจฐเจจ เจเฉเจก, เจฆเฉเจฐเจเจพเจฎเฉ เจจเจคเฉเจเฉเฅค
Xv6, เจเฉฑเจ เจธเจงเจพเจฐเจจ เจฏเฉเจจเจฟเจเจธ เจตเจฐเจเจพ เจเจฐเจจเจฒ
เจเจฐเจจเจฒ เจฌเจฃเจพเจเจฃ เจฒเจ
เจเฉเจก เจตเจฟเฉฑเจ เจเฉฑเจ เจธเจชเจธเจผเจ เจ
เจคเฉ เจตเจฟเจเจพเจฐเจธเจผเฉเจฒ เจฒเจพเจเฉเจเจฐเจจ เจธเจผเจพเจฎเจฒ เจนเฉ pipealloc()
:
#define PIPESIZE 512
struct pipe {
struct spinlock lock;
char data[PIPESIZE];
uint nread; // number of bytes read
uint nwrite; // number of bytes written
int readopen; // read fd is still open
int writeopen; // write fd is still open
};
int
pipealloc(struct file **f0, struct file **f1)
{
struct pipe *p;
p = 0;
*f0 = *f1 = 0;
if((*f0 = filealloc()) == 0 || (*f1 = filealloc()) == 0)
goto bad;
if((p = (struct pipe*)kalloc()) == 0)
goto bad;
p->readopen = 1;
p->writeopen = 1;
p->nwrite = 0;
p->nread = 0;
initlock(&p->lock, "pipe");
(*f0)->type = FD_PIPE;
(*f0)->readable = 1;
(*f0)->writable = 0;
(*f0)->pipe = p;
(*f1)->type = FD_PIPE;
(*f1)->readable = 0;
(*f1)->writable = 1;
(*f1)->pipe = p;
return 0;
bad:
if(p)
kfree((char*)p);
if(*f0)
fileclose(*f0);
if(*f1)
fileclose(*f1);
return -1;
}
pipealloc()
เจฌเจพเจเฉ เจฒเจพเจเฉ เจเจฐเจจ เจฆเฉ เจธเจฅเจฟเจคเฉ เจจเฉเฉฐ เจธเฉเฉฑเจ เจเจฐเจฆเจพ เจนเฉ, เจเจฟเจธ เจตเจฟเฉฑเจ เจซเฉฐเจเจธเจผเจจ เจธเจผเจพเจฎเจฒ เจนเจจ piperead()
, pipewrite()
ะธ pipeclose()
. เจ
เจธเจฒ เจธเจฟเจธเจเจฎ เจเจพเจฒ sys_pipe
เจตเจฟเฉฑเจ เจฒเจพเจเฉ เจเฉเจคเจพ เจเฉฑเจ เจฐเฉเจชเจฐ เจนเฉ
เจฒเฉเจจเจฟเจเจธ 0.01
เจฒเฉเจจเจเจธ 0.01 เจธเจฐเฉเจค เจเฉเจก เจฒเฉฑเจญเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉเฅค เจเจธ เจตเจฟเฉฑเจ เจชเจพเจเจชเจฒเจพเจเจจเจพเจ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจจ เจฆเจพ เจ
เจงเจฟเจเจจ เจเจฐเจจเจพ เจธเจฟเฉฑเจเจฟเจเจฆเจพเจเจ เจนเฉเจตเฉเจเจพ fs
/pipe.c
. เจเจน เจชเจพเจเจชเจฒเจพเจเจจ เจจเฉเฉฐ เจฆเจฐเจธเจพเจเจฃ เจฒเจ เจเฉฑเจ เจเจเจจเฉเจก เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเจพ เจนเฉ, เจชเจฐ เจชเจพเจเจชเจฒเจพเจเจจ เจเจชเจฃเฉ เจเจช เจตเจฟเฉฑเจ เจเจงเฉเจจเจฟเจ C เจตเจฟเฉฑเจ เจฒเจฟเจเฉ เจเจ เจนเฉเฅค เจเฉเจเจฐ เจคเฉเจธเฉเจ 6เจตเฉเจ เจเจกเฉเจธเจผเจจ เจเฉเจก เจฐเจพเจนเฉเจ เจเจชเจฃเฉ เจคเจฐเฉเจเฉ เจจเจพเจฒ เจเฉฐเจฎ เจเฉเจคเจพ เจนเฉ, เจคเจพเจ เจคเฉเจนเจพเจจเฉเฉฐ เจเฉฑเจฅเฉ เจเฉเจ เจธเจฎเฉฑเจธเจฟเจ เจจเจนเฉเจ เจนเฉเจตเฉเจเฉเฅค เจเจน เจซเฉฐเจเจธเจผเจจ เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเจฟเจเจพเจ เจฆเจฟเฉฐเจฆเจพ เจนเฉ write_pipe()
:
int write_pipe(struct m_inode * inode, char * buf, int count)
{
char * b=buf;
wake_up(&inode->i_wait);
if (inode->i_count != 2) { /* no readers */
current->signal |= (1<<(SIGPIPE-1));
return -1;
}
while (count-->0) {
while (PIPE_FULL(*inode)) {
wake_up(&inode->i_wait);
if (inode->i_count != 2) {
current->signal |= (1<<(SIGPIPE-1));
return b-buf;
}
sleep_on(&inode->i_wait);
}
((char *)inode->i_size)[PIPE_HEAD(*inode)] =
get_fs_byte(b++);
INC_PIPE( PIPE_HEAD(*inode) );
wake_up(&inode->i_wait);
}
wake_up(&inode->i_wait);
return b-buf;
}
เจธเฉฐเจฐเจเจจเจพ เจชเจฐเจฟเจญเจพเจธเจผเจพเจตเจพเจ เจจเฉเฉฐ เจตเฉเจเฉ เจฌเจฟเจจเจพเจ, เจคเฉเจธเฉเจ เจเจน เจชเจคเจพ เจฒเจเจพ เจธเจเจฆเฉ เจนเฉ เจเจฟ เจเจฟเจตเฉเจ เจเจเจจเฉเจก เจธเฉฐเจฆเจฐเจญ เจเจฟเจฃเจคเฉ เจฆเฉ เจตเจฐเจคเฉเจ เจเจน เจฆเฉเจเจฃ เจฒเจ เจเฉเจคเฉ เจเจพเจเจฆเฉ เจนเฉ เจเจฟ เจเฉ เจเฉฑเจ เจฐเจพเจเจ เจเจชเจฐเฉเจธเจผเจจ เจฆเจพ เจจเจคเฉเจเจพ เจนเฉเฉฐเจฆเจพ เจนเฉ SIGPIPE
. เจฌเจพเจเจ-เจฌเจพเจ-เจฌเจพเจเจ เจเฉฐเจฎ เจเจฐเจจ เจคเฉเจ เจเจฒเจพเจตเจพ, เจเจน เจซเฉฐเจเจธเจผเจจ เจเฉฑเจชเจฐ เจฆเฉฑเจธเฉ เจเจ เจตเจฟเจเจพเจฐเจพเจ เจจเจพเจฒ เจคเฉเจฒเจจเจพ เจเจฐเจจเจพ เจเจธเจพเจจ เจนเฉ. เจเฉฑเจฅเฉเจ เจคเฉฑเจ เจเจฟ เจคเจฐเจ เจตเฉ sleep_on
/wake_up
เจเฉฐเจจเจพ เจชเจฐเจฆเฉเจธเฉ เจจเจนเฉเจ เจฒเฉฑเจเจฆเจพเฅค
เจเจงเฉเจจเจฟเจ เจฒเฉเจจเจเจธ เจเจฐเจจเจฒ, เจซเฉเจฐเฉเจฌเฉเจเจธเจกเฉ, เจจเฉเฉฑเจเจฌเฉเจเจธเจกเฉ, เจเจชเจจเจฌเฉเจเจธเจกเฉ
เจฎเฉเจ เจคเฉเจเจผเฉ เจจเจพเจฒ เจเฉเจ เจเจงเฉเจจเจฟเจ เจเจฐเจจเจฒเจพเจ เจตเจฟเฉฑเจเฉเจ เจฒเฉฐเจเจฟเจเฅค เจเจนเจจเจพเจ เจตเจฟเฉฑเจเฉเจ เจเจฟเจธเฉ เจเฉเจฒ เจตเฉ เจนเฉเจฃ เจกเจฟเจธเจ เจฒเจพเจเฉ เจจเจนเฉเจ เจนเฉ (เจนเฉเจฐเจพเจจเฉ เจตเจพเจฒเฉ เจเฉฑเจฒ เจจเจนเฉเจ)เฅค เจฒเฉเจจเจเจธ เจฆเจพ เจเจชเจฃเจพ เจฒเจพเจเฉเจเจฐเจจ เจนเฉเฅค เจนเจพเจฒเจพเจเจเจฟ เจคเจฟเฉฐเจจ เจเจงเฉเจจเจฟเจ BSD เจเจฐเจจเจฒเจพเจ เจตเจฟเฉฑเจ เจเฉเจก เจฆเฉ เจ เจงเจพเจฐ เจคเฉ เจฒเจพเจเฉเจเจฐเจจ เจธเจผเจพเจฎเจฒ เจนเจจ เจเฉ เจเฉเจจ เจกเจพเจเจธเจจ เจฆเฉเจเจฐเจพ เจฒเจฟเจเฉ เจเจ เจธเจจ, เจธเจพเจฒเจพเจ เจตเจฟเฉฑเจ เจเจน เจเฉฑเจ เจฆเฉเจเฉ เจคเฉเจ เจฌเจนเฉเจค เจตเฉฑเจเจฐเฉ เจนเฉ เจเจ เจนเจจเฅค
เจชเฉเฉเจนเจจ เจฒเจ fs
/pipe.c
(เจฒเฉเจจเจเจธ เจเฉฑเจคเฉ) เจเจพเจ sys
/kern
/sys_pipe.c
(*BSD เจเฉฑเจคเฉ), เจเจธ เจจเฉเฉฐ เจ
เจธเจฒ เจธเจฎเจฐเจชเจฃ เจฆเฉ เจฒเฉเฉ เจนเฉเฅค เจ
เฉฑเจ เจฆเจพ เจเฉเจก เจตเฉเจเจเจฐ เจ
เจคเฉ เจ
เจธเจฟเฉฐเจเฉเจฐเฉเจจเจธ I/O เจตเจฐเจเฉเจเจ เจตเจฟเจธเจผเฉเจธเจผเจคเจพเจตเจพเจ เจฒเจ เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจ
เจคเฉ เจธเจฎเจฐเจฅเจจ เจฌเจพเจฐเฉ เจนเฉเฅค เจ
เจคเฉ เจฎเฉเจฎเฉเจฐเฉ เจตเฉฐเจก, เจคเจพเจฒเฉ เจ
เจคเฉ เจเจฐเจจเจฒ เจธเฉฐเจฐเจเจจเจพ เจฆเฉ เจตเฉเจฐเจตเฉ เจฌเจนเฉเจค เจตเฉฑเจเจฐเฉ เจนเฉเฉฐเจฆเฉ เจนเจจเฅค เจเจน เจเจน เจจเจนเฉเจ เจนเฉ เจเฉ เจเจพเจฒเจเจพเจ เจจเฉเฉฐ เจเฉฑเจ เจธเจผเฉเจฐเฉเจเจคเฉ เจเจชเจฐเฉเจเจฟเฉฐเจ เจธเจฟเจธเจเจฎ เจเฉเจฐเจธ เจฒเจ เจฒเฉเฉเฉเจเจฆเจพ เจนเฉเฅค
เจตเฉเจธเฉ เจตเฉ, เจฎเฉเจ เจเฉเจ เจชเฉเจฐเจพเจฃเฉ เจชเฉเจเจฐเจจเจพเจ เจจเฉเฉฐ เจเฉเจฆเจฃ เจตเจฟเฉฑเจ เจฆเจฟเจฒเจเจธเจชเฉ เจฐเฉฑเจเจฆเจพ เจธเฉ (เจเจฟเจตเฉเจ เจเจฟ เจชเฉเจฆเจพ เจเจฐเจจเจพ SIGPIPE
เจ
เจคเฉ เจตเจพเจชเจธเฉ EPIPE
เจเฉฑเจ เจฌเฉฐเจฆ เจชเจพเจเจชเจฒเจพเจเจจ เจจเฉเฉฐ เจฒเจฟเจเจฃ เจตเฉเจฒเฉ) เจเจนเจจเจพเจ เจธเจพเจฐเฉ เจตเฉฑเจ-เจตเฉฑเจ เจเจงเฉเจจเจฟเจ เจเจฐเจจเจฒเจพเจ เจตเจฟเฉฑเจเฅค เจฎเฉเจ เจธเจผเจพเจเจฆ เจ
เจธเจฒ เจเฉเจตเจจ เจตเจฟเฉฑเจ เจเจฆเฉ เจตเฉ PDP-11 เจเฉฐเจชเจฟเจเจเจฐ เจจเจนเฉเจ เจฆเฉเจเจพเจเจเจพ, เจชเจฐ เจฎเฉเจฐเฉ เจเจจเจฎ เจคเฉเจ เจเจ เจธเจพเจฒ เจชเจนเจฟเจฒเจพเจ เจฒเจฟเจเฉ เจเจ เจเฉเจก เจคเฉเจ เจธเจฟเฉฑเจเจฃ เจฒเจ เจ
เจเฉ เจตเฉ เจฌเจนเฉเจค เจเฉเจ เจนเฉเฅค
เจฆเจฟเจตเฉ เจเจชเฉเจฐ เจฆเฉเจเจฐเจพ 2011 เจตเจฟเฉฑเจ เจฒเจฟเจเจฟเจ เจเฉฑเจ เจฒเฉเจ:
เจธเจฐเฉเจค: www.habr.com