āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§āĻ¸ā§‡ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ

āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§āĻ¸ā§‡ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ
āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŸāĻŋ āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§āĻ¸ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ā§‡ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§‡āĻ° āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°ā§‡āĨ¤ āĻ†āĻŽāĻŋ āĻ•āĻŋāĻ›ā§āĻŸāĻž āĻšāĻ¤āĻžāĻļ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĻžāĻŽ āĻ¯ā§‡ āĻļāĻŋāĻ°ā§‹āĻ¨āĻžāĻŽ āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻŽā§āĻĒā§āĻ°āĻ¤āĻŋāĻ• āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§āĻ¸ā§‡ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡?Âģ āĻĻā§‡āĻ–āĻž āĻ—ā§‡āĻ˛ āĻ¨āĻž āĻ…āĻ­ā§āĻ¯āĻ¨ā§āĻ¤āĻ°ā§€āĻŖ āĻ•āĻžāĻ āĻžāĻŽā§‹ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡āĨ¤ āĻ†āĻŽāĻŋ āĻ•ā§ŒāĻ¤ā§‚āĻšāĻ˛ā§€ āĻšāĻ¯āĻŧā§‡ āĻ‰āĻ¤ā§āĻ¤āĻ° āĻ–ā§‹āĻāĻœāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻžāĻ¨ā§‹ āĻ¸ā§‚āĻ¤ā§āĻ°ā§‡ āĻ–āĻ¨āĻ¨ āĻ•āĻ°āĻ˛āĻžāĻŽāĨ¤

āĻāĻŸāĻž āĻ•āĻŋāĻ¸ā§‡āĻ° āĻŦā§āĻ¯āĻžāĻĒāĻžāĻ°ā§‡?

āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨āĻ—ā§āĻ˛āĻŋ "āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§āĻ¸ā§‡āĻ° āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻ†āĻŦāĻŋāĻˇā§āĻ•āĻžāĻ°" - āĻ›ā§‹āĻŸ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§āĻ¸ā§‡āĻ° āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ¨āĻŋāĻšāĻŋāĻ¤ āĻĻāĻ°ā§āĻļāĻ¨ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯ āĻāĻŦāĻ‚ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻ˛āĻžāĻ‡āĻ¨ā§‡ āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤ āĻļāĻŋāĻ˛āĻžāĻ˛āĻŋāĻĒāĻŋ:

$ echo hello | wc -c
6

āĻāĻ‡ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻžāĻ°āĻŋāĻ¤āĻž āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛-āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ•āĻ˛ā§‡āĻ° āĻ‰āĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻ­āĻ° āĻ•āĻ°ā§‡ pipe, āĻ¯āĻž āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ āĻĒā§ƒāĻˇā§āĻ āĻžāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻĒāĻžāĻ‡āĻĒ(7) и āĻĒāĻžāĻ‡āĻĒ(2):

āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨āĻ—ā§āĻ˛āĻŋ āĻ†āĻ¨ā§āĻ¤āĻƒāĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¯ā§‹āĻ—āĻžāĻ¯ā§‹āĻ—ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŽā§āĻ–ā§€ āĻšā§āĻ¯āĻžāĻ¨ā§‡āĻ˛ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡āĨ¤ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ā§‡ āĻāĻ•āĻŸāĻŋ āĻ‡āĻ¨āĻĒā§āĻŸ (āĻ˛ā§‡āĻ–āĻž āĻļā§‡āĻˇ) āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ†āĻ‰āĻŸāĻĒā§āĻŸ (āĻĒāĻĄāĻŧā§āĻ¨ āĻļā§‡āĻˇ) āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ā§‡āĻ° āĻ‡āĻ¨āĻĒā§āĻŸā§‡ āĻ˛ā§‡āĻ–āĻž āĻĄā§‡āĻŸāĻž āĻ†āĻ‰āĻŸāĻĒā§āĻŸā§‡ āĻĒāĻĄāĻŧāĻž āĻ¯āĻžāĻ¯āĻŧāĨ¤

āĻ•āĻ˛ āĻ•āĻ°ā§‡ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ āĻ¤ā§ˆāĻ°āĻŋ āĻšāĻ¯āĻŧ 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()āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻĢāĻžāĻ‡āĻ˛ āĻŦāĻ°ā§āĻŖāĻ¨āĻžāĻ•āĻžāĻ°ā§€ āĻĒā§‡āĻ¤ā§‡. āĻāĻ•āĻŸāĻŋ āĻļāĻŋāĻļā§ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ•āĻœāĻ¨ āĻŦāĻ°ā§āĻŖāĻ¨āĻžāĻ•āĻžāĻ°ā§€āĻ•ā§‡ āĻ˛ā§‡āĻ–ā§‡ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ…āĻ¨ā§āĻ¯ āĻŦāĻ°ā§āĻŖāĻ¨āĻžāĻ•āĻžāĻ°ā§€ āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻ‡ āĻĄā§‡āĻŸāĻž āĻĒāĻĄāĻŧā§‡āĨ¤ āĻļā§‡āĻ˛āĻŸāĻŋ 2 āĻāĻŦāĻ‚ 3 āĻŦāĻ°ā§āĻŖāĻ¨āĻžāĻ•āĻžāĻ°ā§€āĻ•ā§‡ "āĻĒā§āĻ¨āĻ°ā§āĻ¨āĻžāĻŽāĻ•āĻ°āĻŖ" āĻ•āĻ°ā§‡ āĻ¯āĻž stdin āĻāĻŦāĻ‚ stdout āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻŽāĻŋāĻ˛āĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤

āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ āĻŦā§āĻ¯āĻ¤ā§€āĻ¤, āĻļā§‡āĻ˛āĻŸāĻŋāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻšāĻŦā§‡ āĻāĻŦāĻ‚ āĻĢāĻžāĻ‡āĻ˛ āĻĨā§‡āĻ•ā§‡ āĻĄā§‡āĻŸāĻž āĻĒāĻĄāĻŧāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ¤ā§‡ āĻĒāĻžāĻ‡āĻĒ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ†āĻŽāĻ°āĻž āĻ†āĻ°āĻ“ āĻ¸āĻ‚āĻ¸ā§āĻĨāĻžāĻ¨ āĻāĻŦāĻ‚ āĻĄāĻŋāĻ¸ā§āĻ•ā§‡āĻ° āĻ¸ā§āĻĨāĻžāĻ¨ āĻ¨āĻˇā§āĻŸ āĻ•āĻ°āĻŦāĨ¤ āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨āĻ—ā§āĻ˛āĻŋ āĻ…āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§€ āĻĢāĻžāĻ‡āĻ˛āĻ—ā§āĻ˛āĻŋ āĻāĻĄāĻŧāĻžāĻ¨ā§‹āĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻ†āĻ°āĻ“ āĻŦā§‡āĻļāĻŋ āĻ•āĻŋāĻ›ā§āĻ° āĻœāĻ¨ā§āĻ¯ āĻ­āĻžāĻ˛:

āĻ¯āĻĻāĻŋ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ•āĻŸāĻŋ āĻ–āĻžāĻ˛āĻŋ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ āĻĨā§‡āĻ•ā§‡ āĻĒāĻĄāĻŧāĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°ā§‡, āĻ¤āĻžāĻšāĻ˛ā§‡ read(2) āĻĄā§‡āĻŸāĻž āĻ‰āĻĒāĻ˛āĻŦā§āĻ§ āĻ¨āĻž āĻšāĻ“āĻ¯āĻŧāĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻŦā§āĻ˛āĻ• āĻ•āĻ°āĻž āĻšāĻŦā§‡āĨ¤ āĻ¯āĻĻāĻŋ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ•āĻŸāĻŋ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ā§‡ āĻ˛ā§‡āĻ–āĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°ā§‡, āĻ¤āĻžāĻšāĻ˛ā§‡ write(2) āĻ˛ā§‡āĻ–āĻžāĻŸāĻŋ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ āĻĨā§‡āĻ•ā§‡ āĻĒāĻ°ā§āĻ¯āĻžāĻĒā§āĻ¤ āĻĄā§‡āĻŸāĻž āĻĒāĻĄāĻŧāĻž āĻ¨āĻž āĻšāĻ“āĻ¯āĻŧāĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻŦā§āĻ˛āĻ• āĻ•āĻ°āĻž āĻšāĻŦā§‡āĨ¤

POSIX āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧāĻ¤āĻžāĻ° āĻŽāĻ¤ā§‹, āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻ¸āĻŽā§āĻĒāĻ¤ā§āĻ¤āĻŋ: āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ā§‡ āĻ˛ā§‡āĻ–āĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ PIPE_BUF āĻŦāĻžāĻ‡āĻŸ (āĻ…āĻ¨ā§āĻ¤āĻ¤ 512) āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻĒāĻžāĻ°āĻŽāĻžāĻŖāĻŦāĻŋāĻ• āĻšāĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¯āĻžāĻ¤ā§‡ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ—ā§āĻ˛āĻŋ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻāĻ•ā§‡ āĻ…āĻĒāĻ°ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻŽāĻ¨āĻ­āĻžāĻŦā§‡ āĻ¯ā§‹āĻ—āĻžāĻ¯ā§‹āĻ— āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ¯āĻž āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻĢāĻžāĻ‡āĻ˛āĻ—ā§āĻ˛āĻŋ (āĻ¯āĻž āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ—ā§āĻ¯āĻžāĻ°āĻžāĻ¨ā§āĻŸāĻŋ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡ āĻ¨āĻž) āĻĒāĻžāĻ°ā§‡ āĻ¨āĻžāĨ¤

āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤ āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻ¸āĻžāĻĨā§‡, āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻŸāĻŋāĻ¤ā§‡ āĻ¤āĻžāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ†āĻ‰āĻŸāĻĒā§āĻŸ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻ…āĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ¤ā§‡ āĻĒā§āĻ°ā§‡āĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻ…āĻĨāĻŦāĻž āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻ—ā§āĻ˛āĻŋ āĻāĻ•āĻŸāĻŋ āĻ•āĻ āĻŋāĻ¨ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻŽā§‹āĻĄā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻšā§āĻ¯āĻŋāĻ• āĻ¸āĻ‚āĻ•ā§‡āĻ¤ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž (āĻ¯ā§‡āĻŽāĻ¨ āĻāĻ•āĻŸāĻŋ āĻ¸ā§‡āĻŽāĻžāĻĢā§‹āĻ°) āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻ•ā§‡ āĻ…āĻĒāĻ°āĻ•ā§‡ āĻ˛ā§‡āĻ–āĻž āĻŦāĻž āĻĒāĻĄāĻŧāĻž āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻšāĻ“āĻ¯āĻŧāĻžāĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧā§‡ āĻ…āĻŦāĻšāĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻ•āĻ¨āĻ­ā§‡āĻ¯āĻŧāĻžāĻ°āĻ°āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻ‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻžāĻŽā§‡āĻ˛āĻž āĻĨā§‡āĻ•ā§‡ āĻŦāĻžāĻāĻšāĻžāĻ¯āĻŧāĨ¤

āĻ†āĻŽāĻ°āĻž āĻ•āĻŋ āĻ–ā§‹āĻāĻœ āĻ•āĻ°āĻ›āĻŋ?

āĻāĻ•āĻŸāĻŋ āĻĒāĻ°āĻŋāĻŦāĻžāĻšāĻ• āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ¤āĻž āĻ•āĻ˛ā§āĻĒāĻ¨āĻž āĻ•āĻ°āĻž āĻ†āĻĒāĻ¨āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻšāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻŋ āĻ†āĻŽāĻžāĻ° āĻ†āĻ™ā§āĻ—ā§āĻ˛ā§‡āĻ° āĻ‰āĻĒāĻ° āĻŦā§āĻ¯āĻžāĻ–ā§āĻ¯āĻž āĻ•āĻ°āĻŦāĨ¤ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻŽā§‡āĻŽāĻ°āĻŋāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻĢāĻžāĻ° āĻāĻŦāĻ‚ āĻ•āĻŋāĻ›ā§ āĻ°āĻžāĻœā§āĻ¯ āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻŦāĻžāĻĢāĻžāĻ° āĻĨā§‡āĻ•ā§‡ āĻĄā§‡āĻŸāĻž āĻ¯ā§‹āĻ— āĻ•āĻ°āĻ¤ā§‡ āĻāĻŦāĻ‚ āĻ…āĻĒāĻ¸āĻžāĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĢāĻžāĻ‚āĻļāĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻŦā§‡āĨ¤ āĻĢāĻžāĻ‡āĻ˛ āĻŦāĻ°ā§āĻŖāĻ¨āĻžāĻ•āĻžāĻ°ā§€āĻ¤ā§‡ āĻ°āĻŋāĻĄ āĻāĻŦāĻ‚ āĻ°āĻžāĻ‡āĻŸ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ•āĻ˛ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•āĻŋāĻ›ā§ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻŦā§‡āĨ¤ āĻāĻŦāĻ‚ āĻ‰āĻĒāĻ°ā§‡ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻŦāĻŋāĻļā§‡āĻˇ āĻ†āĻšāĻ°āĻŖ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ˛āĻ•āĻ—ā§āĻ˛āĻŋāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨āĨ¤

āĻ†āĻŽāĻ°āĻž āĻāĻ–āĻ¨ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ…āĻ¸ā§āĻĒāĻˇā§āĻŸ āĻŽāĻžāĻ¨āĻ¸āĻŋāĻ• āĻŽāĻĄā§‡āĻ˛āĻ•ā§‡ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻŦāĻž āĻ–āĻŖā§āĻĄāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻ‰āĻœā§āĻœā§āĻŦāĻ˛ āĻ†āĻ˛ā§‹āĻ° āĻ¨āĻŋāĻšā§‡ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ā§‡āĻ° āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄ āĻœāĻŋāĻœā§āĻžāĻžāĻ¸āĻžāĻŦāĻžāĻĻ āĻ•āĻ°āĻ¤ā§‡ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤āĨ¤ āĻ¤āĻŦā§‡ āĻ¸āĻŦāĻ¸āĻŽāĻ¯āĻŧ āĻ…āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻļāĻŋāĻ¤ āĻ˜āĻŸāĻ¨āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻĨāĻžāĻ•ā§āĻ¨āĨ¤

āĻ†āĻŽāĻ°āĻž āĻ•ā§‹āĻĨāĻžāĻ¯āĻŧ āĻ–ā§āĻāĻœāĻ›āĻŋ?

āĻ†āĻŽāĻŋ āĻœāĻžāĻ¨āĻŋ āĻ¨āĻž āĻ†āĻŽāĻžāĻ° āĻŦāĻŋāĻ–ā§āĻ¯āĻžāĻ¤ āĻŦāĻ‡āĻŸāĻŋāĻ° āĻ•āĻĒāĻŋ āĻ•ā§‹āĻĨāĻžāĻ¯āĻŧ āĻ†āĻ›ā§‡āĨ¤āĻ¸āĻŋāĻ‚āĻš āĻŦāĻ‡ÂĢ āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§āĻ¸ 6 āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄ āĻ¸āĻš, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§āĻ¸ āĻšā§‡āĻ°āĻŋāĻŸā§‡āĻœ āĻ¸ā§‹āĻ¸āĻžāĻ‡āĻŸāĻŋ āĻ…āĻ¨āĻ˛āĻžāĻ‡āĻ¨ā§‡ āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄ āĻāĻŽāĻ¨āĻ•āĻŋ āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§āĻ¸ā§‡āĻ° āĻĒā§āĻ°āĻžāĻ¨ā§‹ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖāĨ¤

āĻŸāĻŋāĻ‡āĻ‰āĻāĻ‡āĻšāĻāĻ¸ āĻ†āĻ°ā§āĻ•āĻžāĻ‡āĻ­ā§‡āĻ° āĻŽāĻ§ā§āĻ¯ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻ˜ā§āĻ°ā§‡ āĻŦā§‡āĻĄāĻŧāĻžāĻ¨ā§‹ āĻāĻ•āĻŸāĻŋ āĻ¯āĻžāĻĻā§āĻ˜āĻ° āĻĻā§‡āĻ–āĻžāĻ° āĻŽāĻ¤ā§‹āĨ¤ āĻ†āĻŽāĻ°āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ­āĻžāĻ— āĻ•āĻ°āĻž āĻ‡āĻ¤āĻŋāĻšāĻžāĻ¸ā§‡āĻ° āĻĻāĻŋāĻ•ā§‡ āĻ¤āĻžāĻ•āĻžāĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻžāĻ¨ā§‹ āĻ•ā§āĻ¯āĻžāĻ¸ā§‡āĻŸ āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻŋāĻ¨ā§āĻŸāĻ†āĻ‰āĻŸāĻ—ā§āĻ˛āĻŋ āĻĨā§‡āĻ•ā§‡ āĻŦāĻŋāĻŸ āĻ•āĻ°ā§‡ āĻāĻ‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ āĻĒā§āĻ¨āĻ°ā§āĻĻā§āĻ§āĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦāĻ›āĻ°ā§‡āĻ° āĻĒāĻ° āĻŦāĻ›āĻ° āĻĒā§āĻ°āĻšā§‡āĻˇā§āĻŸāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻŋ āĻ¸āĻŽā§āĻŽāĻžāĻ¨ āĻ•āĻ°āĻŋāĨ¤ āĻāĻŦāĻ‚ āĻ†āĻŽāĻŋ āĻ¸ā§‡āĻ‡ āĻŸā§āĻ•āĻ°ā§‹āĻ—ā§āĻ˛āĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ¤ā§€āĻŦā§āĻ°āĻ­āĻžāĻŦā§‡ āĻ¸āĻšā§‡āĻ¤āĻ¨ āĻ¯ā§‡āĻ—ā§āĻ˛āĻŋ āĻāĻ–āĻ¨āĻ“ āĻ…āĻ¨ā§āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ā§ˇ

āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻĒā§āĻ°āĻžāĻšā§€āĻ¨ āĻ‡āĻ¤āĻŋāĻšāĻžāĻ¸ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•ā§ŒāĻ¤ā§‚āĻšāĻ˛āĻ•ā§‡ āĻ¸āĻ¨ā§āĻ¤ā§āĻˇā§āĻŸ āĻ•āĻ°āĻžāĻ° āĻĒāĻ°ā§‡, āĻ†āĻŽāĻ°āĻž āĻ¤ā§āĻ˛āĻ¨āĻž āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻ§ā§āĻ¨āĻŋāĻ• āĻ•ā§‹āĻ°āĻ—ā§āĻ˛āĻŋ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤

āĻ‰āĻĒāĻžāĻ¯āĻŧ āĻĻā§āĻŦāĻžāĻ°āĻž, pipe āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ•āĻ˛ āĻ¨āĻŽā§āĻŦāĻ° 42 sysent[]. āĻ•āĻžāĻ•āĻ¤āĻžāĻ˛ā§€āĻ¯āĻŧ?

āĻāĻ¤āĻŋāĻšā§āĻ¯āĻ—āĻ¤ āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§āĻ¸ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ (1970-1974)

āĻ†āĻŽāĻŋ āĻ•ā§‹āĻ¨ āĻšāĻŋāĻšā§āĻ¨ āĻ–ā§āĻāĻœā§‡ āĻĒāĻžāĻ‡āĻ¨āĻŋ pipe(2) āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¨āĻž PDP-7 āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§āĻ¸ (āĻœāĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ°āĻŋ 1970), āĻŦāĻž āĻ¨āĻž āĻĒā§āĻ°āĻĨāĻŽ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§āĻ¸ (āĻ¨āĻ­ā§‡āĻŽā§āĻŦāĻ° 1971), āĻŦāĻž āĻ…āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄā§‡ āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ (āĻœā§āĻ¨ 1972)āĨ¤

āĻāĻŽāĻ¨ āĻĻāĻžāĻŦāĻŋ āĻ•āĻ°ā§‡āĻ›ā§‡ āĻŸāĻŋāĻ‡āĻ‰āĻāĻ‡āĻšāĻāĻ¸ āĻ¤ā§ƒāĻ¤ā§€āĻ¯āĻŧ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§āĻ¸ (āĻĢā§‡āĻŦā§āĻ°ā§āĻ¯āĻŧāĻžāĻ°āĻŋ 1973) āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ āĻ¸āĻš āĻĒā§āĻ°āĻĨāĻŽ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻ›āĻŋāĻ˛:

āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§āĻ¸ā§‡āĻ° āĻ¤ā§ƒāĻ¤ā§€āĻ¯āĻŧ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖāĻŸāĻŋ āĻ›āĻŋāĻ˛ āĻ…ā§āĻ¯āĻžāĻ¸ā§‡āĻŽā§āĻŦāĻ˛āĻžāĻ°ā§‡ āĻ˛ā§‡āĻ–āĻž āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻ¸āĻš āĻļā§‡āĻˇ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ, āĻ¤āĻŦā§‡ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ āĻ¸āĻš āĻĒā§āĻ°āĻĨāĻŽ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖāĻ“āĨ¤ 1973-āĻāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻ¤ā§ƒāĻ¤ā§€āĻ¯āĻŧ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖā§‡āĻ° āĻ‰āĻ¨ā§āĻ¨āĻ¤āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻ•āĻžāĻœ āĻšāĻ˛āĻ›āĻŋāĻ˛, āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛āĻŸāĻŋ āĻ¸āĻŋ-āĻ¤ā§‡ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ˛ā§‡āĻ–āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ āĻāĻŦāĻ‚ āĻāĻ‡āĻ­āĻžāĻŦā§‡ āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§āĻ¸ā§‡āĻ° āĻšāĻ¤ā§āĻ°ā§āĻĨ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖā§‡āĻ° āĻœāĻ¨ā§āĻŽ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤

āĻāĻ•āĻœāĻ¨ āĻĒāĻžāĻ āĻ• āĻāĻ•āĻŸāĻŋ āĻ¨āĻĨāĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻ•ā§āĻ¯āĻžāĻ¨ āĻ–ā§āĻāĻœā§‡ āĻĒā§‡āĻ¯āĻŧā§‡āĻ›ā§‡āĻ¨ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻĄāĻ— āĻŽā§āĻ¯āĻžāĻ•āĻŋāĻ˛āĻ°āĻ¯āĻŧ "āĻŦāĻžāĻ—āĻžāĻ¨ā§‡āĻ° āĻĒāĻžāĻ¯āĻŧā§‡āĻ° āĻĒāĻžāĻ¤āĻžāĻ° āĻŽā§‹āĻœāĻžāĻŦāĻŋāĻļā§‡āĻˇā§‡āĻ° āĻŽāĻ¤ā§‹ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻžāĻ°" āĻ§āĻžāĻ°āĻŖāĻžāĻŸāĻŋ āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦ āĻ•āĻ°ā§‡āĻ›āĻŋāĻ˛ā§‡āĻ¨āĨ¤

āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§āĻ¸ā§‡ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ
āĻŦā§āĻ°āĻžāĻ¯āĻŧāĻžāĻ¨ āĻ•āĻžāĻ°ā§āĻ¨āĻŋāĻ—āĻžāĻ¨ā§‡āĻ° āĻŦāĻ‡āĻ¤ā§‡āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§āĻ¸: āĻāĻ•āĻŸāĻŋ āĻ‡āĻ¤āĻŋāĻšāĻžāĻ¸ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŽā§ƒāĻ¤āĻŋāĻšāĻžāĻ°āĻŖ", āĻ•āĻ¨āĻ­ā§‡āĻ¯āĻŧāĻ°āĻĻā§‡āĻ° āĻ‰āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻ° āĻ‡āĻ¤āĻŋāĻšāĻžāĻ¸ā§‡ āĻāĻ‡ āĻ¨āĻĨāĻŋāĻŸāĻŋāĻ“ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ– āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡: "... āĻāĻŸāĻŋ 30 āĻŦāĻ›āĻ° āĻ§āĻ°ā§‡ āĻŦā§‡āĻ˛ āĻ˛ā§āĻ¯āĻžāĻŦāĻ¸ā§‡ āĻ†āĻŽāĻžāĻ° āĻ…āĻĢāĻŋāĻ¸ā§‡āĻ° āĻĻā§‡āĻ¯āĻŧāĻžāĻ˛ā§‡ āĻā§āĻ˛āĻ›ā§‡āĨ¤" āĻāĻ–āĻžāĻ¨ā§‡ McIlroy āĻ¸āĻ™ā§āĻ—ā§‡ āĻ¸āĻžāĻ•ā§āĻˇāĻžā§ŽāĻ•āĻžāĻ°āĻāĻŦāĻ‚ āĻĨā§‡āĻ•ā§‡ āĻ†āĻ°ā§‡āĻ•āĻŸāĻŋ āĻ—āĻ˛ā§āĻĒ McIlroy āĻāĻ° āĻ•āĻžāĻœ, 2014 āĻ¸āĻžāĻ˛ā§‡ āĻ˛ā§‡āĻ–āĻž:

āĻ¯āĻ–āĻ¨ āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§āĻ¸ āĻ†āĻŦāĻŋāĻ°ā§āĻ­ā§‚āĻ¤ āĻšāĻ¯āĻŧ, āĻ•ā§‹āĻ°ā§‹āĻŸāĻŋāĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻĒā§āĻ°āĻ¤āĻŋ āĻ†āĻŽāĻžāĻ° āĻ†āĻŦā§‡āĻ— āĻ†āĻŽāĻžāĻ•ā§‡ OS āĻ˛ā§‡āĻ–āĻ•, āĻ•ā§‡āĻ¨ āĻĨāĻŽā§āĻĒāĻ¸āĻ¨āĻ•ā§‡ āĻ•āĻŋāĻ›ā§ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ¯āĻŧ āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻĄā§‡āĻŸāĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĄāĻŋāĻ­āĻžāĻ‡āĻ¸ā§‡ āĻ¨āĻ¯āĻŧ, āĻ…āĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ¯āĻŧ āĻĒā§āĻ°āĻ¸ā§āĻĨāĻžāĻ¨ āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻāĻŋāĻ¤ā§‡ āĻŦāĻ˛ā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻ•ā§‡āĻ¨ āĻ­ā§‡āĻŦā§‡āĻ›āĻŋāĻ˛ āĻāĻŸāĻž āĻ¸āĻŽā§āĻ­āĻŦāĨ¤ āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, āĻāĻ•āĻŸāĻŋ āĻŽāĻŋāĻ¨āĻŋāĻŽāĻžāĻ˛āĻŋāĻ¸ā§āĻŸ āĻšāĻŋāĻ¸āĻžāĻŦā§‡, āĻ¤āĻŋāĻ¨āĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻ­ā§‚āĻŽāĻŋāĻ•āĻž āĻĒāĻžāĻ˛āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšā§‡āĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ā§‡āĻ¨āĨ¤ āĻāĻ•āĻŸāĻŋ āĻŽāĻ§ā§āĻ¯āĻŦāĻ°ā§āĻ¤ā§€ āĻĢāĻžāĻ‡āĻ˛ āĻ˛ā§‡āĻ–āĻžāĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ—ā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻ˛ā§‡āĻ–āĻž āĻ•āĻŋ āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻĄāĻŧ āĻ¸ā§āĻŦāĻŋāĻ§āĻž? āĻāĻŦāĻ‚ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¯āĻ–āĻ¨ āĻ†āĻŽāĻŋ āĻ†āĻ•āĻ°ā§āĻˇāĻŖā§€āĻ¯āĻŧ āĻ¨āĻžāĻŽ "āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨" āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ—ā§āĻ˛āĻŋāĻ° āĻŽāĻŋāĻĨāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸āĻŋāĻ¨āĻŸā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻŦāĻ°āĻŖ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻĒā§āĻ°āĻ¸ā§āĻ¤āĻžāĻŦ āĻĻāĻŋāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĻžāĻŽ, āĻ•ā§‡āĻ¨ āĻ…āĻŦāĻļā§‡āĻˇā§‡ āĻšāĻŋā§ŽāĻ•āĻžāĻ° āĻ•āĻ°ā§‡ āĻŦāĻ˛ā§‡āĻ›āĻŋāĻ˛ā§‡āĻ¨: "āĻ†āĻŽāĻŋ āĻāĻŸāĻŋ āĻ•āĻ°āĻŦ!"āĨ¤

āĻāĻŦāĻ‚ āĻ•āĻ°ā§‡āĻ›ā§‡āĨ¤ āĻāĻ• āĻĻā§āĻ°ā§āĻ­āĻžāĻ—ā§āĻ¯āĻœāĻ¨āĻ• āĻ¸āĻ¨ā§āĻ§ā§āĻ¯āĻžāĻ¯āĻŧ, āĻ•ā§‡āĻ¨ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻāĻŦāĻ‚ āĻļā§‡āĻ˛ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°ā§‡, āĻ¤āĻžāĻ°āĻž āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ‡āĻ¨āĻĒā§āĻŸ āĻ—ā§āĻ°āĻšāĻŖ āĻ•āĻ°ā§‡ (āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ āĻĨā§‡āĻ•ā§‡ āĻ†āĻ¸āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡) āĻŽāĻžāĻ¨āĻ¸āĻŽā§āĻŽāĻ¤ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻ āĻŋāĻ• āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻ¨āĻžāĻŽ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°ā§‡āĨ¤ āĻĒāĻ°ā§‡āĻ° āĻĻāĻŋāĻ¨, āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨āĻ—ā§āĻ˛āĻŋ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ–ā§āĻŦ āĻŦā§āĻ¯āĻžāĻĒāĻ•āĻ­āĻžāĻŦā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻ¸āĻĒā§āĻ¤āĻžāĻšā§‡āĻ° āĻļā§‡āĻˇā§‡āĻ° āĻĻāĻŋāĻ•ā§‡, āĻ¸āĻšāĻŋāĻŦāĻ°āĻž āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻ° āĻĨā§‡āĻ•ā§‡ āĻĒā§āĻ°āĻŋāĻ¨ā§āĻŸāĻžāĻ°ā§‡ āĻ¨āĻĨāĻŋ āĻĒāĻžāĻ āĻžāĻ¤ā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĻ¨āĨ¤ āĻ•āĻŋāĻ›ā§āĻŸāĻž āĻĒāĻ°ā§‡, āĻ•ā§‡āĻ¨ āĻ•ā§āĻ˛āĻŋāĻ¨āĻžāĻ° āĻ•āĻ¨āĻ­ā§‡āĻ¨āĻļāĻ¨ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ā§‡āĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻŽā§‹āĻĄāĻŧāĻžāĻ¨ā§‹āĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻ¸āĻ˛ API āĻāĻŦāĻ‚ āĻ¸āĻŋāĻ¨āĻŸā§āĻ¯āĻžāĻ•ā§āĻ¸ āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ āĻ•āĻ°ā§‡ āĻ¯āĻž āĻ¤āĻ–āĻ¨ āĻĨā§‡āĻ•ā§‡āĻ‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧā§‡ āĻ†āĻ¸āĻ›ā§‡āĨ¤

āĻĻā§āĻ°ā§āĻ­āĻžāĻ—ā§āĻ¯āĻŦāĻļāĻ¤, āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§āĻ¸ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ā§‡āĻ° āĻ¤ā§ƒāĻ¤ā§€āĻ¯āĻŧ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖā§‡āĻ° āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄ āĻšāĻžāĻ°āĻŋāĻ¯āĻŧā§‡ āĻ—ā§‡āĻ›ā§‡āĨ¤ āĻāĻŦāĻ‚ āĻ¯āĻĻāĻŋāĻ“ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄ āĻ¸āĻŋ-āĻ¤ā§‡ āĻ˛ā§‡āĻ–āĻž āĻ†āĻ›ā§‡ āĻšāĻ¤ā§āĻ°ā§āĻĨ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ, āĻ¯āĻž 1973 āĻ¸āĻžāĻ˛ā§‡āĻ° āĻ¨āĻ­ā§‡āĻŽā§āĻŦāĻ°ā§‡ āĻĒā§āĻ°āĻ•āĻžāĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛, āĻ¤āĻŦā§‡ āĻāĻŸāĻŋ āĻ†āĻ¨ā§āĻˇā§āĻ āĻžāĻ¨āĻŋāĻ• āĻĒā§āĻ°āĻ•āĻžāĻļā§‡āĻ° āĻ•āĻ¯āĻŧā§‡āĻ• āĻŽāĻžāĻ¸ āĻ†āĻ—ā§‡ āĻĒā§āĻ°āĻ•āĻžāĻļāĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ āĻāĻŦāĻ‚ āĻāĻ¤ā§‡ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ¨ā§‡āĻ‡āĨ¤ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻĻā§āĻƒāĻ–ā§‡āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧ āĻ¯ā§‡ āĻāĻ‡ āĻ•āĻŋāĻ‚āĻŦāĻĻāĻ¨ā§āĻ¤āĻŋ āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§āĻ¸ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯āĻŸāĻŋāĻ° āĻ‰āĻ¤ā§āĻ¸ āĻ•ā§‹āĻĄāĻŸāĻŋ āĻšāĻžāĻ°āĻŋāĻ¯āĻŧā§‡ āĻ—ā§‡āĻ›ā§‡, āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ āĻšāĻŋāĻ°āĻ¤āĻ°ā§‡āĨ¤

āĻ†āĻŽāĻ°āĻž āĻœāĻ¨ā§āĻ¯ āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ āĻŸā§‡āĻ•ā§āĻ¸āĻŸ āĻ†āĻ›ā§‡ pipe(2) āĻ‰āĻ­āĻ¯āĻŧ āĻ°āĻŋāĻ˛āĻŋāĻœ āĻĨā§‡āĻ•ā§‡, āĻ¤āĻžāĻ‡ āĻ†āĻĒāĻ¨āĻŋ āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ āĻ…āĻ¨ā§āĻ¸āĻ¨ā§āĻ§āĻžāĻ¨ āĻ•āĻ°ā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ¤ā§ƒāĻ¤ā§€āĻ¯āĻŧ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ (āĻ•āĻŋāĻ›ā§ āĻļāĻŦā§āĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯, "āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ" āĻ†āĻ¨ā§āĻĄāĻžāĻ°āĻ˛āĻžāĻ‡āĻ¨ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, ^H āĻ˛āĻŋāĻŸāĻžāĻ°ā§‡āĻ˛ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ†āĻ¨ā§āĻĄāĻžāĻ°āĻ¸ā§āĻ•ā§‹āĻ° āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°ā§‡!) āĻāĻ‡ āĻĒā§āĻ°ā§‹āĻŸā§‹-pipe(2) āĻ…ā§āĻ¯āĻžāĻ¸ā§‡āĻŽā§āĻŦāĻ˛āĻžāĻ°ā§‡ āĻ˛ā§‡āĻ–āĻž āĻāĻŦāĻ‚ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ āĻŦāĻ°ā§āĻŖāĻ¨āĻžāĻ•āĻžāĻ°ā§€ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡āĻ‡ āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻļāĻŋāĻ¤ āĻŽā§‚āĻ˛ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻžāĻ°āĻŋāĻ¤āĻž āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡:

āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ•āĻ˛ āĻ¨āĻ˛ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ āĻ¨āĻžāĻŽā§‡ āĻāĻ•āĻŸāĻŋ I/O āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĨ¤ āĻ°āĻŋāĻŸāĻžāĻ°ā§āĻ¨ āĻ•āĻ°āĻž āĻĢāĻžāĻ‡āĻ˛ āĻĄāĻŋāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸāĻ° āĻ°āĻŋāĻĄ āĻāĻŦāĻ‚ āĻ°āĻžāĻ‡āĻŸ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻ¯āĻ–āĻ¨ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ā§‡ āĻ•āĻŋāĻ›ā§ āĻ˛ā§‡āĻ–āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻ–āĻ¨ āĻāĻŸāĻŋ 504 āĻŦāĻžāĻ‡āĻŸ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻĄā§‡āĻŸāĻž āĻŦāĻžāĻĢāĻžāĻ° āĻ•āĻ°ā§‡, āĻ¯āĻžāĻ° āĻĒāĻ°ā§‡ āĻ˛ā§‡āĻ–āĻžāĻ° āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸ā§āĻĨāĻ—āĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ āĻĨā§‡āĻ•ā§‡ āĻĒāĻĄāĻŧāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻŦāĻžāĻĢāĻžāĻ° āĻ•āĻ°āĻž āĻĄā§‡āĻŸāĻž āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧāĨ¤

āĻĒāĻ°ā§‡āĻ° āĻŦāĻ›āĻ° āĻ¨āĻžāĻ—āĻžāĻĻ, āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻ¸āĻŋ, āĻāĻŦāĻ‚ āĻ¤ā§‡ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ˛ā§‡āĻ–āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻĒāĻžāĻ‡āĻĒ (2) āĻšāĻ¤ā§āĻ°ā§āĻĨ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻĒā§āĻ°ā§‹āĻŸā§‹āĻŸāĻžāĻ‡āĻĒ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻāĻ° āĻ†āĻ§ā§āĻ¨āĻŋāĻ• āĻšā§‡āĻšāĻžāĻ°āĻž āĻ…āĻ°ā§āĻœāĻ¨ āĻ•āĻ°ā§‡āĻ›ā§‡ "pipe(fildes)"

āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ•āĻ˛ āĻ¨āĻ˛ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ āĻ¨āĻžāĻŽā§‡ āĻāĻ•āĻŸāĻŋ I/O āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĨ¤ āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻĢāĻžāĻ‡āĻ˛ āĻŦāĻ°ā§āĻŖāĻ¨āĻžāĻ•āĻžāĻ°ā§€āĻ—ā§āĻ˛āĻŋ āĻĒāĻĄāĻŧāĻž āĻāĻŦāĻ‚ āĻ˛ā§‡āĻ–āĻžāĻ° āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ•āĻ˛āĻžāĻĒā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻ¯āĻ–āĻ¨ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ā§‡ āĻ•āĻŋāĻ›ā§ āĻ˛ā§‡āĻ–āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻ–āĻ¨ r1 (resp. fildes[1]) āĻ āĻĢāĻŋāĻ°ā§‡ āĻ†āĻ¸āĻž āĻŦāĻ°ā§āĻŖāĻ¨āĻžāĻ•āĻžāĻ°ā§€ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ, 4096 āĻŦāĻžāĻ‡āĻŸ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻĄā§‡āĻŸāĻž āĻŦāĻžāĻĢāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻ°āĻĒāĻ° āĻ˛ā§‡āĻ–āĻžāĻ° āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸ā§āĻĨāĻ—āĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ āĻĨā§‡āĻ•ā§‡ āĻĒāĻĄāĻŧāĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ, āĻŦāĻ°ā§āĻŖāĻ¨āĻžāĻ•āĻžāĻ°ā§€ r0 āĻ āĻĢāĻŋāĻ°ā§‡ āĻ†āĻ¸ā§‡ (resp. fildes[0]) āĻĄā§‡āĻŸāĻž āĻ¨ā§‡āĻ¯āĻŧāĨ¤

āĻāĻŸāĻž āĻ§āĻ°ā§‡ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧ āĻ¯ā§‡ āĻāĻ•āĻŦāĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻ˛ā§‡, āĻĻā§āĻŸāĻŋ (āĻŦāĻž āĻ¤āĻžāĻ° āĻŦā§‡āĻļāĻŋ) āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻ…ā§āĻ¯āĻžāĻ•āĻŸāĻŋāĻ‚ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž (āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻ†āĻšā§āĻŦāĻžāĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻžāĻāĻŸāĻžāĻšāĻžāĻŽāĻš) āĻ•āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ āĻĨā§‡āĻ•ā§‡ āĻĄā§‡āĻŸāĻž āĻĒāĻžāĻ¸ āĻ•āĻ°āĻŦā§‡ āĻĒāĻĄāĻŧāĻž и āĻ˛ā§‡āĻ–āĻž.

āĻāĻ•āĻŸāĻŋ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ°ā§ˆāĻ–āĻŋāĻ• āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻļā§‡āĻ˛āĻŸāĻŋāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻŋāĻ¨āĻŸā§āĻ¯āĻžāĻ•ā§āĻ¸ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

āĻāĻ•āĻŸāĻŋ āĻ–āĻžāĻ˛āĻŋ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ āĻĨā§‡āĻ•ā§‡ āĻĒāĻĄāĻŧāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ•āĻ˛āĻ—ā§āĻ˛āĻŋ (āĻ•ā§‹āĻ¨āĻ“ āĻŦāĻžāĻĢāĻžāĻ° āĻ•āĻ°āĻž āĻĄā§‡āĻŸāĻž āĻ¨ā§‡āĻ‡) āĻ¯āĻžāĻ° āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻžāĻ¨ā§āĻ¤ āĻĨāĻžāĻ•ā§‡ (āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĢāĻžāĻ‡āĻ˛ āĻŦāĻ°ā§āĻŖāĻ¨āĻžāĻ•āĻžāĻ°ā§€ āĻŦāĻ¨ā§āĻ§) "āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻļā§‡āĻˇ" āĻĢā§‡āĻ°āĻ¤ āĻĻā§‡āĻ¯āĻŧāĨ¤ āĻāĻ•āĻŸāĻŋ āĻ…āĻ¨ā§āĻ°ā§‚āĻĒ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻ¤ā§‡ āĻ•āĻ˛ āĻ˛āĻŋāĻ–ā§āĻ¨ āĻ‰āĻĒā§‡āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ.

āĻĒā§āĻ°āĻĨāĻŽ āĻĻāĻŋāĻ•ā§‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŋāĻ¤ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻĒā§āĻ°āĻ¯ā§‹āĻœā§āĻ¯ āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§āĻ¸ā§‡āĻ° āĻĒāĻžā§āĻšāĻŽ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖā§‡ (āĻœā§āĻ¨ 1974), āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŸāĻŋ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻ°āĻŋāĻ˛āĻŋāĻœā§‡ āĻ¯ā§‡āĻŸāĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻāĻ•āĻ‡ āĻ°āĻ•āĻŽāĨ¤ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¤āĻžāĻ‡ āĻĒāĻžā§āĻšāĻŽ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻāĻĄāĻŧāĻŋāĻ¯āĻŧā§‡ āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡.

āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§āĻ¸ āĻˇāĻˇā§āĻ  āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ (1975)

āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§āĻ¸ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄ āĻĒāĻĄāĻŧāĻ¤ā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°āĻ›āĻŋ āĻˇāĻˇā§āĻ  āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ (āĻŽā§‡ 1975)āĨ¤ āĻŦā§āĻ¯āĻžāĻĒāĻ•āĻ­āĻžāĻŦā§‡ āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ āĻ˛āĻžāĻ¯āĻŧāĻ¨ā§āĻ¸ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§€ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖāĻ—ā§āĻ˛āĻŋāĻ° āĻ‰āĻ¤ā§āĻ¸āĻ—ā§āĻ˛āĻŋāĻ° āĻ¤ā§āĻ˛āĻ¨āĻžāĻ¯āĻŧ āĻāĻŸāĻŋ āĻ–ā§āĻāĻœā§‡ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ…āĻ¨ā§‡āĻ• āĻ¸āĻšāĻœ:

āĻŦāĻšā§ āĻŦāĻ›āĻ° āĻ§āĻ°ā§‡ āĻŦāĻ‡ āĻ˛āĻžāĻ¯āĻŧāĻ¨ā§āĻ¸ āĻŦā§‡āĻ˛ āĻ˛ā§āĻ¯āĻžāĻŦāĻ¸ā§‡āĻ° āĻŦāĻžāĻ‡āĻ°ā§‡ āĻ‰āĻĒāĻ˛āĻŦā§āĻ§ āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§āĻ¸ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ā§‡āĻ° āĻāĻ•āĻŽāĻžāĻ¤ā§āĻ° āĻ¨āĻĨāĻŋ āĻ›āĻŋāĻ˛āĨ¤ āĻ¯āĻĻāĻŋāĻ“ āĻˇāĻˇā§āĻ  āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖā§‡āĻ° āĻ˛āĻžāĻ‡āĻ¸ā§‡āĻ¨ā§āĻ¸ āĻļāĻŋāĻ•ā§āĻˇāĻ•āĻĻā§‡āĻ° āĻāĻ° āĻ‰ā§ŽāĻ¸ āĻ•ā§‹āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ¯āĻŧ, āĻ¸āĻĒā§āĻ¤āĻŽ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖā§‡āĻ° āĻ˛āĻžāĻ‡āĻ¸ā§‡āĻ¨ā§āĻ¸ āĻāĻ‡ āĻ¸āĻŽā§āĻ­āĻžāĻŦāĻ¨āĻžāĻ•ā§‡ āĻŦāĻžāĻĻ āĻĻāĻŋāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛, āĻ¤āĻžāĻ‡ āĻŦāĻ‡āĻŸāĻŋ āĻ…āĻŦā§ˆāĻ§ āĻŸāĻžāĻ‡āĻĒāĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻ•āĻĒāĻŋāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤

āĻ†āĻœ āĻ†āĻĒāĻ¨āĻŋ āĻŦāĻ‡āĻŸāĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ¨āĻƒāĻŽā§āĻĻā§āĻ°āĻŖ āĻ•āĻĒāĻŋ āĻ•āĻŋāĻ¨āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨, āĻ¯āĻžāĻ° āĻ•āĻ­āĻžāĻ°āĻŸāĻŋ āĻ•āĻĒāĻŋāĻ¯āĻŧāĻžāĻ°ā§‡ āĻļāĻŋāĻ•ā§āĻˇāĻžāĻ°ā§āĻĨā§€āĻĻā§‡āĻ° āĻšāĻŋāĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°ā§‡āĨ¤ āĻāĻŦāĻ‚ āĻ“āĻ¯āĻŧāĻžāĻ°ā§‡āĻ¨ āĻŸā§āĻŽāĻŋāĻ•ā§‡ āĻ§āĻ¨ā§āĻ¯āĻŦāĻžāĻĻ (āĻ¯āĻŋāĻ¨āĻŋ TUHS āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻļā§āĻ°ā§ āĻ•āĻ°ā§‡āĻ›ā§‡āĻ¨), āĻ†āĻĒāĻ¨āĻŋ āĻĄāĻžāĻ‰āĻ¨āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻˇāĻˇā§āĻ  āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖā§‡āĻ° āĻ‰ā§ŽāĻ¸ āĻĒāĻŋāĻĄāĻŋāĻāĻĢ. āĻ†āĻŽāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ§āĻžāĻ°āĻŖāĻž āĻĻāĻŋāĻ¤ā§‡ āĻšāĻžāĻ‡ āĻ¯ā§‡ āĻĢāĻžāĻ‡āĻ˛āĻŸāĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻ•āĻ¤āĻŸāĻž āĻĒā§āĻ°āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡:

15 āĻŦāĻ›āĻ°ā§‡āĻ°āĻ“ āĻŦā§‡āĻļāĻŋ āĻ†āĻ—ā§‡, āĻ†āĻŽāĻŋ āĻĒā§āĻ°āĻĻāĻ¤ā§āĻ¤ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ•āĻĒāĻŋ āĻŸāĻžāĻ‡āĻĒ āĻ•āĻ°ā§‡āĻ›āĻŋāĻ˛āĻžāĻŽ āĻ˛āĻžāĻ¯āĻŧāĻ¨ā§āĻ¸āĻ•āĻžāĻ°āĻŖ āĻ†āĻŽāĻŋ āĻ…āĻœāĻžāĻ¨āĻž āĻ¸āĻ‚āĻ–ā§āĻ¯āĻ• āĻ…āĻ¨ā§āĻ¯ āĻ•āĻĒāĻŋ āĻĨā§‡āĻ•ā§‡ āĻ†āĻŽāĻžāĻ° āĻ•āĻĒāĻŋāĻ° āĻŽāĻžāĻ¨ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āĻ°āĻŋāĻ¨āĻŋāĨ¤ TUHS āĻāĻ–āĻ¨āĻ“ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻ›āĻŋāĻ˛ āĻ¨āĻž, āĻāĻŦāĻ‚ āĻ†āĻŽāĻžāĻ° āĻ•āĻžāĻ›ā§‡ āĻĒā§āĻ°āĻžāĻ¨ā§‹ āĻ‰āĻ¤ā§āĻ¸āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ›āĻŋāĻ˛ āĻ¨āĻžāĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ 1988 āĻ¸āĻžāĻ˛ā§‡ āĻ†āĻŽāĻŋ 9āĻŸāĻŋ āĻŸā§āĻ°ā§āĻ¯āĻžāĻ• āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻžāĻ¨ā§‹ āĻŸā§‡āĻĒ āĻĒā§‡āĻ¯āĻŧā§‡āĻ›āĻŋ āĻ¯āĻž āĻāĻ•āĻŸāĻŋ PDP11 āĻ•āĻŽā§āĻĒāĻŋāĻ‰āĻŸāĻžāĻ° āĻĨā§‡āĻ•ā§‡ āĻŦā§āĻ¯āĻžāĻ•āĻ†āĻĒ āĻ›āĻŋāĻ˛āĨ¤ āĻāĻŸāĻŋ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡ āĻ•āĻŋāĻ¨āĻž āĻ¤āĻž āĻœāĻžāĻ¨āĻž āĻ•āĻ āĻŋāĻ¨ āĻ›āĻŋāĻ˛, āĻ¤āĻŦā§‡ āĻāĻ•āĻŸāĻŋ āĻ…āĻ•ā§āĻˇāĻ¤ /usr/src/ āĻ—āĻžāĻ› āĻ›āĻŋāĻ˛ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻŦā§‡āĻļāĻŋāĻ°āĻ­āĻžāĻ— āĻĢāĻžāĻ‡āĻ˛ 1979 āĻšāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛, āĻ¯āĻž āĻ¤āĻ–āĻ¨āĻ“ āĻĒā§āĻ°āĻžāĻšā§€āĻ¨ āĻŦāĻ˛ā§‡ āĻŽāĻ¨ā§‡ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻāĻŸāĻž āĻ›āĻŋāĻ˛ āĻ¸āĻĒā§āĻ¤āĻŽ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ, āĻŦāĻž PWB āĻĄā§‡āĻ°āĻŋāĻ­ā§‡āĻŸāĻŋāĻ­, āĻ†āĻŽāĻŋ āĻ­ā§‡āĻŦā§‡āĻ›āĻŋāĻ˛āĻžāĻŽāĨ¤

āĻ†āĻŽāĻŋ āĻĢāĻžāĻ‡āĻ¨ā§āĻĄāĻŸāĻŋāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋ āĻāĻŦāĻ‚ āĻˇāĻˇā§āĻ  āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖā§‡āĻ° āĻ…āĻŦāĻ¸ā§āĻĨāĻžāĻ¯āĻŧ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻ¸ā§‚āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨āĻž āĻ•āĻ°ā§‡āĻ›āĻŋāĨ¤ āĻ•ā§‹āĻĄā§‡āĻ° āĻ…āĻ‚āĻļāĻŸāĻŋ āĻāĻ•āĻ‡ āĻ°āĻ¯āĻŧā§‡ āĻ—ā§‡āĻ›ā§‡, āĻ…āĻ‚āĻļāĻŸāĻŋ āĻ¸āĻžāĻŽāĻžāĻ¨ā§āĻ¯ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨āĻž āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛, āĻ†āĻ§ā§āĻ¨āĻŋāĻ• āĻŸā§‹āĻ•ā§‡āĻ¨ += āĻ…āĻĒā§āĻ°āĻšāĻ˛āĻŋāĻ¤ =+ āĻ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°ā§‡āĨ¤ āĻ•āĻŋāĻ›ā§ āĻ¸āĻšāĻœāĻ­āĻžāĻŦā§‡ āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛, āĻāĻŦāĻ‚ āĻ•āĻŋāĻ›ā§ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖāĻ°ā§‚āĻĒā§‡ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ–ā§āĻŦ āĻŦā§‡āĻļāĻŋ āĻ¨āĻ¯āĻŧāĨ¤

āĻāĻŦāĻ‚ āĻ†āĻœ āĻ†āĻŽāĻ°āĻž āĻŸāĻŋāĻ‡āĻ‰āĻāĻ‡āĻšāĻāĻ¸-āĻāĻ° āĻˇāĻˇā§āĻ  āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖā§‡āĻ° āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄ āĻ…āĻ¨āĻ˛āĻžāĻ‡āĻ¨ā§‡ āĻĒāĻĄāĻŧāĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ āĻ†āĻ°ā§āĻ•āĻžāĻ‡āĻ­, āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻĄā§‡āĻ¨āĻŋāĻ¸ āĻ°āĻŋāĻšāĻŋāĻ° āĻšāĻžāĻ¤ āĻ›āĻŋāĻ˛.

āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, āĻĒā§āĻ°āĻĨāĻŽ āĻ¨āĻœāĻ°ā§‡, āĻ•āĻžāĻ°ā§āĻ¨āĻŋāĻ˜āĻ¨ āĻāĻŦāĻ‚ āĻ°āĻŋāĻšāĻŋāĻ° āĻ¸āĻŽāĻ¯āĻŧāĻ•āĻžāĻ˛ā§‡āĻ° āĻ†āĻ—ā§‡ āĻ¸āĻŋ-āĻ•ā§‹āĻĄā§‡āĻ° āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯ āĻšāĻ˛ āĻāĻŸāĻŋ āĻ¸āĻ‚āĻ•ā§āĻˇāĻŋāĻĒā§āĻ¤āĻ¤āĻž. āĻāĻŸāĻž āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻ‡ āĻ¨āĻ¯āĻŧ āĻ¯ā§‡ āĻ†āĻŽāĻŋ āĻ†āĻŽāĻžāĻ° āĻ¸āĻžāĻ‡āĻŸā§‡ āĻ¤ā§āĻ˛āĻ¨āĻžāĻŽā§‚āĻ˛āĻ•āĻ­āĻžāĻŦā§‡ āĻ¸āĻ‚āĻ•ā§€āĻ°ā§āĻŖ āĻĄāĻŋāĻ¸āĻĒā§āĻ˛ā§‡ āĻāĻ˛āĻžāĻ•āĻžāĻ¯āĻŧ āĻĢāĻŋāĻŸ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦāĻŋāĻ¸ā§āĻ¤ā§ƒāĻ¤ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨āĻž āĻ›āĻžāĻĄāĻŧāĻžāĻ‡ āĻ•ā§‹āĻĄā§‡āĻ° āĻ¸ā§āĻ¨āĻŋāĻĒā§‡āĻŸ āĻ¸āĻ¨ā§āĻ¨āĻŋāĻŦā§‡āĻļ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻ•ā§āĻˇāĻŽ āĻšāĻ‡āĨ¤

āĻļā§āĻ°ā§āĻ¤ā§‡ /usr/sys/ken/pipe.c āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻžāĻ–ā§āĻ¯āĻžāĻŽā§‚āĻ˛āĻ• āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻ†āĻ›ā§‡ (āĻāĻŦāĻ‚ āĻšā§āĻ¯āĻžāĻ, āĻ†āĻ°ā§‹ āĻ†āĻ›ā§‡ /usr/sys/dmr):

/*
 * 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 āĻĢāĻžāĻ‡āĻ˛ā§‡āĻ° āĻœāĻ¨ā§āĻ¯, āĻ¤āĻžāĻ°āĻž āĻ¸āĻ™ā§āĻ—āĻ¤āĻŋāĻĒā§‚āĻ°ā§āĻŖ inode-āĻĒāĻ¤āĻžāĻ•āĻž 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;
}

āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻ¸ā§āĻĒāĻˇā§āĻŸāĻ­āĻžāĻŦā§‡ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°ā§‡ āĻāĻ–āĻžāĻ¨ā§‡ āĻ•āĻŋ āĻ˜āĻŸāĻ›ā§‡. āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ•ā§‹āĻĄāĻŸāĻŋ āĻŦā§‹āĻāĻž āĻāĻ¤ āĻ¸āĻšāĻœ āĻ¨āĻ¯āĻŧ, āĻ†āĻ‚āĻļāĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ "struct āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€ uÂģ āĻāĻŦāĻ‚ āĻ°ā§‡āĻœāĻŋāĻ¸ā§āĻŸāĻžāĻ° R0 и R1 āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ•āĻ˛ āĻĒā§āĻ¯āĻžāĻ°āĻžāĻŽāĻŋāĻŸāĻžāĻ° āĻāĻŦāĻ‚ āĻ°āĻŋāĻŸāĻžāĻ°ā§āĻ¨ āĻŽāĻžāĻ¨ āĻĒāĻžāĻ¸ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻž āĻ¯āĻžāĻ• ialloc() āĻĄāĻŋāĻ¸ā§āĻ•ā§‡ āĻ°āĻžāĻ–ā§āĻ¨ āĻ‡āĻ¨ā§‹āĻĄ (āĻ†āĻ‡āĻ¨ā§‹āĻĄ), āĻāĻŦāĻ‚ āĻ¸āĻžāĻšāĻžāĻ¯ā§āĻ¯ā§‡ falloc() - āĻĻā§āĻŸāĻŋ āĻĻā§‹āĻ•āĻžāĻ¨ āĻĢāĻžāĻ‡āĻ˛. āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ āĻŋāĻ•āĻ āĻžāĻ• āĻĨāĻžāĻ•āĻ˛ā§‡, āĻ†āĻŽāĻ°āĻž āĻāĻ‡ āĻĢāĻžāĻ‡āĻ˛āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ā§‡āĻ° āĻĻā§āĻ‡ āĻĒā§āĻ°āĻžāĻ¨ā§āĻ¤ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻšāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĢā§āĻ˛ā§āĻ¯āĻžāĻ— āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻŦ, āĻ¤āĻžāĻĻā§‡āĻ° āĻāĻ•āĻ‡ āĻ‡āĻ¨ā§‹āĻĄā§‡āĻ° āĻĻāĻŋāĻ•ā§‡ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļ āĻ•āĻ°āĻŦ (āĻ¯āĻžāĻ° āĻ°ā§‡āĻĢāĻžāĻ°ā§‡āĻ¨ā§āĻ¸ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž 2 āĻšāĻŦā§‡), āĻāĻŦāĻ‚ āĻ‡āĻ¨ā§‹āĻĄāĻŸāĻŋāĻ•ā§‡ āĻ¸āĻ‚āĻļā§‹āĻ§āĻŋāĻ¤ āĻāĻŦāĻ‚ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻšāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻ•āĻ°āĻŦāĨ¤ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻŽāĻ¨ā§‹āĻ¯ā§‹āĻ— āĻĻāĻŋāĻ¨ āĻ†āĻŽāĻŋ āĻ°āĻžāĻ–āĻŋ() āĻ¨āĻ¤ā§āĻ¨ āĻ‡āĻ¨ā§‹āĻĄā§‡ āĻ°ā§‡āĻĢāĻžāĻ°ā§‡āĻ¨ā§āĻ¸ āĻ—āĻŖāĻ¨āĻž āĻšā§āĻ°āĻžāĻ¸ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¤ā§āĻ°ā§āĻŸāĻŋāĻ° āĻĒāĻĨā§‡āĨ¤

pipe() āĻ•āĻžāĻ°āĻŖā§‡ R0 и R1 āĻĒāĻĄāĻŧāĻž āĻāĻŦāĻ‚ āĻ˛ā§‡āĻ–āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĢāĻžāĻ‡āĻ˛ āĻŦāĻ°ā§āĻŖāĻ¨āĻžāĻ•āĻžāĻ°ā§€ āĻ¨āĻŽā§āĻŦāĻ° āĻĢā§‡āĻ°āĻ¤ āĻĻāĻŋāĻ¨āĨ¤ falloc() āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ āĻ•āĻžāĻ āĻžāĻŽā§‹āĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻžāĻ° āĻĢā§‡āĻ°āĻ¤ āĻĻā§‡āĻ¯āĻŧ, āĻ¤āĻŦā§‡ āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ "āĻ°āĻŋāĻŸāĻžāĻ°ā§āĻ¨"āĻ“ āĻ•āĻ°ā§‡ u.u_ar0[R0] āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ āĻŦāĻ°ā§āĻŖāĻ¨āĻžāĻ•āĻžāĻ°ā§€āĨ¤ āĻ¯ā§‡, āĻ•ā§‹āĻĄ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ r āĻĒāĻĄāĻŧāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĢāĻžāĻ‡āĻ˛ āĻŦāĻ°ā§āĻŖāĻ¨āĻžāĻ•āĻžāĻ°ā§€ āĻāĻŦāĻ‚ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻ˛ā§‡āĻ–āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻŦāĻ°ā§āĻŖāĻ¨āĻžāĻ•āĻžāĻ°ā§€ āĻŦāĻ°āĻžāĻĻā§āĻĻ āĻ•āĻ°ā§‡ u.u_ar0[R0] āĻĻā§āĻŦāĻŋāĻ¤ā§€āĻ¯āĻŧ āĻ•āĻ˛ā§‡āĻ° āĻĒāĻ° falloc().

āĻĒāĻ¤āĻžāĻ•āĻž FPIPE, āĻ¯āĻž āĻ†āĻŽāĻ°āĻž āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ¸ā§‡āĻŸ āĻ•āĻ°āĻŋ, āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡āĻ° āĻ†āĻšāĻ°āĻŖ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻ•āĻ°ā§‡ sys2.c-āĻ rdwr(), āĻ¯āĻž āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ I/O āĻ°ā§āĻŸāĻŋāĻ¨āĻ•ā§‡ āĻ•āĻ˛ āĻ•āĻ°ā§‡:

/*
 * 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'a (āĻāĻ•āĻŸāĻŋ āĻ–āĻžāĻ˛āĻŋ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ 0 āĻāĻ° āĻ¸āĻŽāĻžāĻ¨ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡) āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡āĻ‡ āĻĨāĻžāĻ•āĻž āĻĄā§‡āĻŸāĻžāĻ° āĻļā§‡āĻˇā§‡āĻ° āĻĻāĻŋāĻ•ā§‡ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻ•āĻ°ā§‡āĨ¤ āĻ˛ā§‡āĻ–āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒāĻ°ā§āĻ¯āĻžāĻĒā§āĻ¤ āĻœāĻžāĻ¯āĻŧāĻ—āĻž āĻĨāĻžāĻ•āĻ˛ā§‡, āĻ†āĻŽāĻ°āĻž āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ āĻĨā§‡āĻ•ā§‡ āĻĒā§‚āĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ i_size1 āĻĨā§‡āĻ•ā§‡ PIPESIZ. āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻ†āĻŽāĻ°āĻž āĻ˛āĻ•āĻŸāĻŋ āĻ›ā§‡āĻĄāĻŧā§‡ āĻĻāĻŋāĻ‡ āĻāĻŦāĻ‚ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ āĻĨā§‡āĻ•ā§‡ āĻĒāĻĄāĻŧāĻžāĻ° āĻ…āĻĒā§‡āĻ•ā§āĻˇāĻžāĻ¯āĻŧ āĻĨāĻžāĻ•āĻž āĻ¯ā§‡ āĻ•ā§‹āĻ¨āĻ“ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻœāĻžāĻ—āĻžāĻ¨ā§‹āĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°āĻŋāĨ¤ āĻ†āĻŽāĻ°āĻž āĻļā§āĻ°ā§āĻ¤ā§‡ āĻĢāĻŋāĻ°ā§‡ āĻ¯āĻžāĻ‡ āĻ¯ā§‡ āĻ†āĻŽāĻ°āĻž āĻ¯āĻ¤āĻŸāĻž āĻŦāĻžāĻ‡āĻŸ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻ¤āĻ¤āĻŸāĻž āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻĒā§‡āĻ°ā§‡āĻ›āĻŋ āĻ•āĻŋāĻ¨āĻžāĨ¤ āĻ¯āĻĻāĻŋ āĻāĻŸāĻŋ āĻŦā§āĻ¯āĻ°ā§āĻĨ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ†āĻŽāĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ°ā§‡āĻ•āĻ°ā§āĻĄāĻŋāĻ‚ āĻšāĻ•ā§āĻ° āĻļā§āĻ°ā§ āĻ•āĻ°āĻŋāĨ¤

āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻĒāĻ°āĻžāĻŽāĻŋāĻ¤āĻŋ i_mode inode āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧ r, w и x. āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻ†āĻŽāĻ°āĻž āĻ¸āĻ‚āĻ•ā§‡āĻ¤ āĻĻāĻŋāĻ‡ āĻ¯ā§‡ āĻ•āĻŋāĻ›ā§ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻŦāĻŋāĻŸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ˛ā§‡āĻ–āĻž āĻŦāĻž āĻĒāĻĄāĻŧāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻĒā§‡āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻ›ā§‡ IREAD и IWRITE āĻ¯āĻĨāĻžāĻ•ā§āĻ°āĻŽā§‡ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĒāĻ¤āĻžāĻ•āĻž āĻ¸ā§‡āĻŸ āĻāĻŦāĻ‚ āĻ•āĻ˛ sleep(), āĻāĻŦāĻ‚ āĻāĻŸāĻž āĻ†āĻļāĻž āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡ āĻ¯ā§‡ āĻ­āĻŦāĻŋāĻˇā§āĻ¯āĻ¤ā§‡ āĻ…āĻ¨ā§āĻ¯ āĻ•ā§‹āĻ¨ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ•āĻ˛ āĻ•āĻ°āĻŦā§‡ wakeup().

āĻ†āĻ¸āĻ˛ āĻœāĻžāĻĻā§āĻŸāĻŋ āĻ˜āĻŸā§‡ sleep() и wakeup(). āĻ¤āĻžāĻ°āĻž āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻšāĻ¯āĻŧ slp.c, āĻ¸ā§āĻ¤ā§āĻ° āĻŦāĻŋāĻ–ā§āĻ¯āĻžāĻ¤ "āĻ†āĻĒāĻ¨āĻŋ āĻāĻŸāĻž āĻŦā§āĻāĻ¤ā§‡ āĻ†āĻļāĻž āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻ¨āĻž" āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯. āĻ­āĻžāĻ—ā§āĻ¯āĻ•ā§āĻ°āĻŽā§‡, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•ā§‹āĻĄāĻŸāĻŋ āĻŦā§āĻāĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¨āĻž, āĻļā§āĻ§ā§ āĻ•āĻŋāĻ›ā§ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻĻā§‡āĻ–ā§āĻ¨:

/*
 * 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 āĻ‡āĻ¨ā§‹āĻĄā§‡ āĻ†āĻŽāĻ°āĻž āĻ…āĻŦāĻ¸ā§āĻĨāĻžāĻ¨āĻŸāĻŋ 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), āĻ¯āĻž āĻāĻ•āĻŸāĻŋ āĻ…āĻšāĻ˛āĻžāĻŦāĻ¸ā§āĻĨāĻžāĻ° āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻ¯āĻĻāĻŋ readp() āĻāĻ–āĻ¨āĻ“ āĻāĻ° āĻŦā§āĻ˛āĻ• āĻŽā§āĻ›ā§‡ āĻĢā§‡āĻ˛ā§‡āĻ¨āĻŋ, āĻ¤āĻžāĻ‡ āĻ•ā§‹āĻĄāĻŸāĻŋ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻ¸āĻ āĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻŦā§‡āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ¤āĻžāĻ•āĻžāĻ¨ wakeup(), āĻāĻŸāĻž āĻ¸ā§āĻĒāĻˇā§āĻŸ āĻšāĻ¯āĻŧā§‡ āĻ¯āĻžāĻ¯āĻŧ āĻ¯ā§‡ āĻāĻŸāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ˜ā§āĻŽā§‡āĻ° āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻŸāĻŋāĻ•ā§‡ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻšāĻŋāĻšā§āĻ¨āĻŋāĻ¤ āĻ•āĻ°ā§‡, āĻ¯āĻžāĻ¤ā§‡ āĻ­āĻŦāĻŋāĻˇā§āĻ¯āĻ¤ā§‡ sched() āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ‡ āĻāĻŸāĻž āĻšāĻžāĻ˛ā§. āĻ¤āĻžāĻ‡ readp() āĻ•āĻžāĻ°āĻŖ wakeup(), āĻ†āĻ¨āĻ˛āĻ•, āĻ¸ā§‡āĻŸ IREAD āĻāĻŦāĻ‚ āĻ•āĻ˛ sleep(ip+2)- āĻāĻ‡ āĻ¸āĻŦ āĻ†āĻ—ā§‡ writep() āĻšāĻ•ā§āĻ° āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ†āĻ°āĻŽā§āĻ­ āĻ•āĻ°ā§‡āĨ¤

āĻāĻŸāĻŋ āĻˇāĻˇā§āĻ  āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖā§‡ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ā§‡āĻ° āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ•āĻ°ā§‡āĨ¤ āĻ¸āĻšāĻœ āĻ•ā§‹āĻĄ, āĻ¸ā§āĻĻā§‚āĻ°āĻĒā§āĻ°āĻ¸āĻžāĻ°ā§€ āĻĒā§āĻ°āĻ­āĻžāĻŦāĨ¤

āĻ¸āĻĒā§āĻ¤āĻŽ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§āĻ¸ (āĻœāĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ°āĻŋ 1979) āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ°āĻŋāĻ˛āĻŋāĻœ (āĻšāĻžāĻ° āĻŦāĻ›āĻ° āĻĒāĻ°ā§‡) āĻ¯āĻž āĻ…āĻ¨ā§‡āĻ• āĻ¨āĻ¤ā§āĻ¨ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻāĻŦāĻ‚ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯āĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ°āĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°ā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻŸāĻžāĻ‡āĻĒ āĻ•āĻžāĻ¸ā§āĻŸāĻŋāĻ‚, āĻ‡āĻ‰āĻ¨āĻŋāĻ¯āĻŧāĻ¨ āĻāĻŦāĻ‚ āĻŸāĻžāĻ‡āĻĒ āĻ•āĻ°āĻž āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸāĻžāĻ° āĻ¸ā§āĻŸā§āĻ°āĻžāĻ•āĻšāĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§‡āĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡āĻ“ āĻāĻŸāĻŋ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ–āĻ¯ā§‹āĻ—ā§āĻ¯ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°ā§‡āĻ›ā§‡āĨ¤ āĻ¯āĻžāĻšā§‹āĻ• āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ āĻ•ā§‹āĻĄ āĻ•āĻžāĻ°ā§āĻ¯āĻ¤ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻšāĻ¯āĻŧāĻ¨āĻŋāĨ¤ āĻ†āĻŽāĻ°āĻž āĻāĻ‡ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖāĻŸāĻŋ āĻāĻĄāĻŧāĻŋāĻ¯āĻŧā§‡ āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤

Xv6, āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§āĻ¸-āĻāĻ° āĻŽāĻ¤ā§‹ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛

āĻ¨āĻŋāĻ‰āĻ•ā§āĻ˛āĻŋāĻ¯āĻŧāĻžāĻ¸ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ Xv6 āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§āĻ¸ā§‡āĻ° āĻˇāĻˇā§āĻ  āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻ­āĻžāĻŦāĻŋāĻ¤, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ x86 āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻ°ā§‡ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻ§ā§āĻ¨āĻŋāĻ• āĻ¸āĻŋ-āĻ¤ā§‡ āĻ˛ā§‡āĻ–āĻžāĨ¤ āĻ•ā§‹āĻĄ āĻĒāĻĄāĻŧāĻž āĻ¸āĻšāĻœ āĻāĻŦāĻ‚ āĻŦā§‹āĻ§āĻ—āĻŽā§āĻ¯. āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“, TUHS-āĻāĻ° āĻ¸āĻžāĻĨā§‡ āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§āĻ¸ āĻ‰āĻ¤ā§āĻ¸ā§‡āĻ° āĻŦāĻŋāĻĒāĻ°ā§€āĻ¤ā§‡, āĻ†āĻĒāĻ¨āĻŋ āĻāĻŸāĻŋ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨, āĻāĻŸāĻŋ āĻ¸āĻ‚āĻļā§‹āĻ§āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻāĻŦāĻ‚ āĻāĻŸāĻŋ PDP 11/70 āĻ›āĻžāĻĄāĻŧāĻž āĻ…āĻ¨ā§āĻ¯ āĻ•āĻŋāĻ›ā§āĻ¤ā§‡ āĻšāĻžāĻ˛āĻžāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ āĻ…āĻ¤āĻāĻŦ, āĻāĻ‡ āĻ•ā§‹āĻ°āĻŸāĻŋ āĻŦāĻŋāĻļā§āĻŦāĻŦāĻŋāĻĻā§āĻ¯āĻžāĻ˛āĻ¯āĻŧāĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ…āĻĒāĻžāĻ°ā§‡āĻŸāĻŋāĻ‚ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āĻ° āĻļāĻŋāĻ•ā§āĻˇāĻžāĻ° āĻ‰āĻĒāĻžāĻĻāĻžāĻ¨ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻŦā§āĻ¯āĻžāĻĒāĻ•āĻ­āĻžāĻŦā§‡ āĻŦā§āĻ¯āĻŦāĻšā§ƒāĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻ¸ā§‚āĻ¤ā§āĻ° Github āĻ āĻ†āĻ›ā§‡.

āĻ•ā§‹āĻĄ āĻāĻ•āĻŸāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻ•āĻžāĻ° āĻāĻŦāĻ‚ āĻšāĻŋāĻ¨ā§āĻ¤āĻžāĻļā§€āĻ˛ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻĒāĻžāĻ‡āĻĒ.āĻ¸āĻŋ, āĻĄāĻŋāĻ¸ā§āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ‡āĻ¨ā§‹āĻĄā§‡āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡ āĻŽā§‡āĻŽāĻ°āĻŋāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻĢāĻžāĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸āĻŽāĻ°ā§āĻĨāĻŋāĻ¤āĨ¤ āĻāĻ–āĻžāĻ¨ā§‡ āĻ†āĻŽāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° "āĻ¸ā§āĻŸā§āĻ°āĻžāĻ•āĻšāĻžāĻ°āĻžāĻ˛ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨" āĻāĻŦāĻ‚ āĻĢāĻžāĻ‚āĻļāĻ¨ā§‡āĻ° āĻ¸āĻ‚āĻœā§āĻžāĻž āĻĻāĻŋāĻšā§āĻ›āĻŋ 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 āĻāĻ•āĻŸāĻŋ āĻŽā§‹āĻĄāĻŧāĻ• āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻšāĻ¯āĻŧ sysfile.c. āĻ†āĻŽāĻŋ āĻ¤āĻžāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•ā§‹āĻĄ āĻĒāĻĄāĻŧāĻžāĻ° āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĻāĻŋāĻ‡āĨ¤ āĻœāĻŸāĻŋāĻ˛āĻ¤āĻžāĻŸāĻŋ āĻˇāĻˇā§āĻ  āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖā§‡āĻ° āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄā§‡āĻ° āĻ¸ā§āĻ¤āĻ°ā§‡, āĻ¤āĻŦā§‡ āĻāĻŸāĻŋ āĻĒāĻĄāĻŧāĻž āĻ…āĻ¨ā§‡āĻ• āĻ¸āĻšāĻœ āĻāĻŦāĻ‚ āĻ†āĻ°āĻ“ āĻ†āĻ¨āĻ¨ā§āĻĻāĻĻāĻžāĻ¯āĻŧāĻ•āĨ¤

āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ 0.01

āĻ†āĻĒāĻ¨āĻŋ āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ 0.01 āĻāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄ āĻ–ā§āĻāĻœā§‡ āĻĒā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ āĻāĻŸāĻŋ āĻ¤āĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻ…āĻ§ā§āĻ¯āĻ¯āĻŧāĻ¨ āĻļāĻŋāĻ•ā§āĻˇāĻžāĻŽā§‚āĻ˛āĻ• āĻšāĻŦā§‡ fs/pipe.c. āĻāĻ–āĻžāĻ¨ā§‡, āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ¨āĻŋāĻ§āĻŋāĻ¤ā§āĻŦ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ‡āĻ¨ā§‹āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨āĻŸāĻŋ āĻ¨āĻŋāĻœā§‡āĻ‡ āĻ†āĻ§ā§āĻ¨āĻŋāĻ• āĻ¸āĻŋ-āĻ¤ā§‡ āĻ˛ā§‡āĻ–āĻž āĻ†āĻ›ā§‡āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻˇāĻˇā§āĻ  āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻ•ā§‹āĻĄāĻŸāĻŋ āĻšā§āĻ¯āĻžāĻ• āĻ•āĻ°ā§‡ āĻĨāĻžāĻ•ā§‡āĻ¨, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻāĻ–āĻžāĻ¨ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•ā§‹āĻ¨ā§‹ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻšāĻŦā§‡ āĻ¨āĻžāĨ¤ āĻāĻ‡ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻŽāĻ¤ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ āĻ•āĻŋ 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 āĻ¸āĻžāĻ˛ā§‡ āĻĻāĻŋāĻ­āĻŋ āĻ•āĻžāĻĒā§āĻ° āĻ˛āĻŋāĻ–ā§‡āĻ›āĻŋāĻ˛ā§‡āĻ¨, āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŸāĻŋ "āĻĒāĻžāĻ‡āĻĒ āĻāĻŦāĻ‚ FIFO-āĻāĻ° āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ (āĻāĻ–āĻ¨ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤) āĻ•āĻžāĻœ āĻ•āĻ°ā§‡ āĻ¤āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻ“āĻ­āĻžāĻ°āĻ­āĻŋāĻ‰āĨ¤ āĻ• āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸ā§‡ āĻ¸āĻžāĻŽā§āĻĒā§āĻ°āĻ¤āĻŋāĻ• āĻĒā§āĻ°āĻ¤āĻŋāĻļā§āĻ°ā§āĻ¤āĻŋ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻ…ā§āĻ¯āĻžāĻ•āĻļāĻ¨ā§‡āĻ° āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨ āĻŽāĻĄā§‡āĻ˛āĻ•ā§‡ āĻšāĻŋāĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°ā§‡, āĻ¯āĻžāĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ…āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§€ āĻĢāĻžāĻ‡āĻ˛āĻ—ā§āĻ˛āĻŋāĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻŦā§‡āĻļāĻŋ; āĻāĻŦāĻ‚ āĻ‡āĻ‰āĻ¨āĻŋāĻ•ā§āĻ¸ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ā§‡āĻ° āĻˇāĻˇā§āĻ  āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖā§‡ "āĻ–ā§āĻŦ āĻ°āĻ•ā§āĻˇāĻŖāĻļā§€āĻ˛ āĻ˛āĻ•āĻŋāĻ‚" āĻĨā§‡āĻ•ā§‡ āĻĒāĻžāĻ‡āĻĒāĻ˛āĻžāĻ‡āĻ¨āĻ—ā§āĻ˛āĻŋ āĻ•āĻ¤āĻĻā§‚āĻ° āĻšāĻ˛ā§‡ āĻ—ā§‡āĻ›ā§‡ āĻ¤āĻžāĻ“ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧāĨ¤

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨