์•…์–ด๋ฅผ ์ง€๋‚˜ ๋˜ ํ•œ ๋งˆ๋ฆฌ์˜ ํ•˜์ด์  ๋ฒ„๊ทธ

์•…์–ด๋ฅผ ์ง€๋‚˜ ๋˜ ํ•œ ๋งˆ๋ฆฌ์˜ ํ•˜์ด์  ๋ฒ„๊ทธ

$> set -o pipefail

$> fortune | head -1 > /dev/null && echo "ะŸะพะฒะตะทะปะพ!" || echo "ะ’ั‹ ะฟั€ะพะธะณั€ะฐะปะธ"
ะŸะพะฒะตะทะปะพ!

$> fortune | head -1 > /dev/null && echo "ะŸะพะฒะตะทะปะพ!" || echo "ะ’ั‹ ะฟั€ะพะธะณั€ะฐะปะธ"
ะ’ั‹ ะฟั€ะพะธะณั€ะฐะปะธ

์—ฌ๊ธฐ์— fortune ์กฐ๊ฑด๋ถ€ ํ”„๋กœ๊ทธ๋žจ exit(rand()).

์„ค๋ช…ํ•ด์ฃผ์‹ค ์ˆ˜ ์žˆ๋‚˜์š”? ์—ฌ๊ธฐ์„œ ๋ฌด์Šจ ์ผ์ด์•ผ??

์„œ์ •์ -์—ญ์‚ฌ์  ์—ฌ๋‹ด

๋‚˜๋Š” ์ด Heisenbug๋ฅผ ์ฒ˜์Œ ์•Œ๊ฒŒ ๋œ ๊ฒƒ์€ XNUMX๋…„ ์ „์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ FaxNET์˜ ๊ฒŒ์ดํŠธ์›จ์ด์— ๋Œ€ํ•ด ๋‹ค์Œ์„ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ดํ”„ FreeBSD์—์„œ "์ฒด์ปค ์—ฐ์ฃผ". ์˜ˆ์ƒ๋Œ€๋กœ ๋‚˜๋Š” ๋‚˜ ์ž์‹ ์„ ๊ณ ๊ธ‰์Šค๋Ÿฝ๊ณ  ๊ฒฝํ—˜์ด ํ’๋ถ€ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ชจ๋“  ์ผ์„ ์ตœ๋Œ€ํ•œ ์„ธ์‹ฌํ•˜๊ณ  ์„ธ์‹ฌํ•˜๊ฒŒ ํ•˜๋ ค๊ณ  ํ–ˆ๊ณ , ํŠนํžˆ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ์— ์‹ ๊ฒฝ์„ ์ผ๋Š”๋ฐ...

์ด์ „์— sendmail ๋ฐ uucp/uupc์˜ ๋ฒ„๊ทธ๋ฅผ ์ฒ˜๋ฆฌํ•œ ๊ฒฝํ—˜์œผ๋กœ ์ธํ•ด "์ฒ ์ €ํ•œ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ"์— ๋Œ€ํ•œ ๋…ธ๋ ฅ์ด ๋”ํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ด์•ผ๊ธฐ๋ฅผ ์ž์„ธํžˆ ํŒŒ๊ณ ๋“ค ํ•„์š”๋Š” ์—†์ง€๋งŒ, ์ €๋Š” ์ด ํ•˜์ด์  ๋ฒ„๊ทธ์™€ 10์ฃผ ๋™์•ˆ 14~XNUMX์‹œ๊ฐ„ ๋™์•ˆ ์”จ๋ฆ„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ธฐ์–ต์— ๋‚จ์•˜๊ณ  ์–ด์ œ์ด ์˜› ์ง€์ธ์ด ๋‹ค์‹œ ๋ฐฉ๋ฌธํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ„๋žตํ•œ ์„ค๋ช… ๋‹ต๋ณ€

๊ณต์ต ์‚ฌ์—… head ์ˆ˜ ์ฑ„๋„์„ ๋‹ซ์•„์ค˜ fortune ัั€ะฐะทัƒ ์ฒซ ์ค„์„ ์ฝ์ž๋งˆ์ž. ๋งŒ์•ฝ์— fortune ๋‘ ๊ฐœ ์ด์ƒ์˜ ๋ผ์ธ์„ ์ถœ๋ ฅํ•œ ๋‹ค์Œ ํ•ด๋‹น ํ˜ธ์ถœ์„ write() ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฑฐ๋‚˜ ์š”์ฒญํ•œ ๊ฒƒ๋ณด๋‹ค ๋” ์ ์€ ๋ฐ”์ดํŠธ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค๋Š” ๋ณด๊ณ ๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. ์ฐจ๋ก€๋กœ, ์‹ ์ค‘ํ•œ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. fortune ์ข…๋ฃŒ ์ƒํƒœ์— ์ด ์ƒํ™ฉ์„ ๋ฐ˜์˜ํ•  ๊ถŒ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ์„ค์น˜๋กœ ์ธํ•ด set -o pipefail ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค || echo "ะ’ั‹ ะฟั€ะพะธะณั€ะฐะปะธ".

๊ทธ๋Ÿฌ๋‚˜, head ์ œ ์‹œ๊ฐ„์— ๋ชป ๊ฐˆ ์ˆ˜๋„ ์žˆ์–ด ์ „์— ๋‹ซ๋‹ค fortune ๋ฐ์ดํ„ฐ ์ถœ๋ ฅ์ด ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ž‘๋™ํ•  ๊ฑฐ์˜ˆ์š” && echo "ะŸะพะฒะตะทะปะพ!".

๋‚ด ์˜ค๋Š˜ ์ค‘ ํ•˜๋‚˜์— GNUMakefile ํ•˜๋‚˜ ์žˆ์–ด์š” ๋‹จํŽธ:

echo '#define MDBX_BUILD_COMPILER "$(shell set -o pipefail; $(CC) --version | head -1 || echo 'Please use GCC or CLANG compatible compiler')"'

์ธ๊ฐ„์œผ๋กœ ๋ฒˆ์—ญ๋จ

์—ฌ๊ธฐ์—์„œ๋Š” ํ”ํžˆ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์ผ์ž…๋‹ˆ๋‹ค GNU ๋ฉ”์ดํฌ ะธ ์„ธ๊ฒŒ ๋•Œ๋ฆฌ๋‹ค ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํŒŒ์ผ๋Ÿฌ ๋ฐฉ์‹์œผ๋กœ --version ๊ทธ๊ฐ€ ๋ˆ„๊ตฌ์ธ์ง€ ๋ฌป๊ณ  ์˜ต์…˜์ด ์ง€์›๋˜์ง€ ์•Š์œผ๋ฉด ์Šคํ…์ด ์‚ฝ์ž…๋ฉ๋‹ˆ๋‹ค. "GCC ๋˜๋Š” CLANG ํ˜ธํ™˜ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค".

๊ฐ™์€ ์ƒ์šฉ๊ตฌ ์–ด๋””์„œ๋‚˜ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ž˜ ์ „์— ์ด๊ณณ์— ๋‚˜ํƒ€๋‚ฌ๊ณ  ๋ชจ๋“  ๊ณณ์—์„œ ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค(Linux, Solaris, OSX, FreeBSD, WSL ๋“ฑ.). ๊ทธ๋Ÿฐ๋ฐ ์–ด์ œ์— ์•ŒํŠธ๋ฆฌ๋ˆ…์Šค ํ”Œ๋žซํผ์— ์—˜๋ธŒ๋ฃจ์Šค 2000(E2K) ๋‚˜๋Š” ๋‹ค์Œ์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค:

#define MDBX_BUILD_COMPILER "lcc:1.23.20:Sep--4-2019:e2k-v3-linux Please use GCC or CLANG compatible compiler"

์†”์งํžˆ ๋‚˜๋Š” ๋‚˜์˜ ์˜ค๋žœ '์ง€์ธ'์„ ์ฆ‰์‹œ ์ธ์‹ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ์ด ํ”„๋กœ์ ํŠธ๋Š” ์ด๋ฏธ Elbrus์™€ Alt๋ฅผ ํฌํ•จํ•œ ๋‹ค์–‘ํ•œ ๋ฐฐํฌํŒ์—์„œ ์—ฌ๋Ÿฌ ๋ฒˆ ํ…Œ์ŠคํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ์ปดํŒŒ์ผ๋Ÿฌ, GNU Make ๋ฐ bash ๋ฒ„์ „. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋‚˜๋Š” ์—ฌ๊ธฐ์„œ ๋‚˜์˜ ์‹ค์ˆ˜๋ฅผ ๋ณด๊ณ  ์‹ถ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋ฅผ ์žฌํ˜„ํ•˜๊ฑฐ๋‚˜ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์ดํ•ดํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋” ์ด์ƒํ•œ ์ผ์ด ์ผ์–ด๋‚˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.
๋ช…๋ น์ค„ ์ฃผ๋ฌธ:

echo "#define MDBX_BUILD_COMPILER '$(set -o pipefail; LC_ALL=C cc --version | head -1 || echo "Please use GCC or CLANG compatible compiler")'"

๋•Œ๋•Œ๋กœ ์ถ”๊ฐ€ ํ…์ŠคํŠธ๊ฐ€ ์ƒ์„ฑ๋˜๊ธฐ๋„ ํ•˜์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค... ์ข…์ข… ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๊ฝค ์˜ค๋žซ๋™์•ˆ ์œ ์ง€๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์ง€๋งŒ, ๋” ์˜ค๋ž˜ ์ฐŒ๋ฅด๋ฉด ํ•ญ์ƒ ๋‘˜ ๋‹ค ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

๋ฌผ๋ก , strace ์šฐ๋ฆฌ์˜ ๋ชจ๋“  ๊ฒƒ! ๊ทธ๋ฆฌ๊ณ  ์žฅํ™ฉํ•œ ์žฅํ™ฉํ•œ ๋ง์„ ์ž…๋ ฅํ–ˆ์ง€๋งŒ Enter๋ฅผ ๋ˆ„๋ฅผ ์‹œ๊ฐ„์ด ์—†์–ด์„œ ๋‚˜๋Š” ์˜ค๋žœ ์นœ๊ตฌ์ธ Mr. Heisenbug์™€ ๊ฐœ๋ฐœ์ž๋“ค์„ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ ๋‚˜ ์ž์‹ ๋„ 25๋…„ ์ „, ๋…ธ์Šคํƒค์ง€์–ดโ€ฆ ๊ทธ๋ฆฌ๊ณ  ๋‚˜๋Š” ์Šฌํผํ•˜๋ฉฐ ์ด ๋ฉ”๋ชจ๋ฅผ ์“ฐ๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค ๐Ÿ˜‰

๊ทธ๊ฑด ๊ทธ๋ ‡๊ณ , ์ž์กด์‹ฌ์ด ๊ฐ•ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ํ•˜์ด์  ๋ฒ„๊ทธ์•„๋ž˜์— strace ์žฌํ˜„ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

๋ฌด์Šจ ์ผ์ด์•ผ?

  • ๊ณต์ต ์‚ฌ์—… head ์š”์ฒญ๋œ ํ–‰ ์ˆ˜๋ฅผ ์ฝ๋Š” ์ฆ‰์‹œ ์ฝ๊ณ  ์žˆ๋Š” ์ฑ„๋„์„ ๋‹ซ์„ ๊ถŒ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(๋˜๋Š” ๊ฐ•์ œ๋กœ).
  • ๋ฐ์ดํ„ฐ ์ƒ์„ฑ ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ์ž(์ด ๊ฒฝ์šฐ cc) ์ˆ˜ ์—ฌ๋Ÿฌ ์ค„์„ ์ธ์‡„ํ•˜๊ณ  ๋ฌด๋ฃŒ ์—ฌ๋Ÿฌ ๋ฒˆ์˜ ํ†ตํ™”๋ฅผ ํ†ตํ•ด ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์„ธ์š”. write().
  • ๋ฉด ๋…์ž๋Š” ์ž‘์„ฑ์ž ์ธก์˜ ๋…น์Œ์ด ๋๋‚˜๊ธฐ ์ „์— ์ž์‹ ์˜ ์ฑ„๋„์„ ๋‹ซ์„ ์‹œ๊ฐ„์„ ๊ฐ–๊ฒŒ ๋˜๋ฉฐ, ๊ทธ๋Ÿฌ๋ฉด ์ž‘์„ฑ์ž๋Š” ์˜ค๋ฅ˜๋ฅผ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • ์ž‘๊ฐ€ ํ”„๋กœ๊ทธ๋žจ ๊ถŒ๋ฆฌ๊ฐ€์žˆ๋‹ค. ๋‘˜ ๋‹ค ์ฑ„๋„ ์“ฐ๊ธฐ ์˜ค๋ฅ˜๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ์™„๋ฃŒ ์ฝ”๋“œ์— ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์„ค์น˜๋กœ ์ธํ•ด set -o pipefail ํŒŒ์ดํ”„๋ผ์ธ ์™„๋ฃŒ ์ฝ”๋“œ๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ์š”์†Œ์—์„œ ๊ฒฐ๊ณผ๊ฐ€ XNUMX์ด ์•„๋‹ˆ๋ฉด XNUMX์ด ์•„๋‹ˆ๋ฉฐ(์ž˜๋ชป๋จ) ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. || echo "Please use GCC or CLANG compatible compiler".

์ž‘์„ฑ๊ธฐ ํ”„๋กœ๊ทธ๋žจ์ด ์‹ ํ˜ธ์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์— ๋”ฐ๋ผ ์ฐจ์ด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ”„๋กœ๊ทธ๋žจ์ด ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(XNUMX์ด ์•„๋‹Œ ์ข…๋ฃŒ/์˜ค๋ฅ˜ ์ข…๋ฃŒ ์ƒํƒœ๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋จ). write() ์š”์ฒญ ๋ฐ ์„ค์ •๋œ ๊ฒƒ๋ณด๋‹ค ์ ์€ ๋ฐ”์ดํŠธ๋ฅผ ์“ด ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. errno = EPIPE.

๋ˆ„๊ฐ€ ํƒ“ํ•  ๊ฒƒ์ž…๋‹ˆ๊นŒ?

์„ค๋ช…๋œ ์‚ฌ๋ก€์˜ ๊ฒฝ์šฐ ๋ชจ๋“  ๊ฒƒ ์กฐ๊ธˆ. ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ cc (lcc:1.23.20:Sepโ€”4-2019:e2k-v3-linux) ~์ด ์•„๋‹ˆ๋‹ค. ๋ถˆํ•„์š”ํ•œ. ๋งŽ์€ ๊ฒฝ์šฐ์—๋Š” ์กฐ์‹ฌ์Šค๋Ÿฝ๊ฒŒ ์‹ค์ˆ˜ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚ซ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ „ํ†ต์ ์ธ ๋™์ž‘์„ ์œ„ํ•ด ์„ค๊ณ„๋œ ์ƒ์šฉ๊ตฌ์— ๊ฐ‘์ž‘์Šค๋Ÿฌ์šด ๊ฒฐํ•จ์ด ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค.

๋ฌด์—‡์„ํ•ด์•ผ ํ•˜๋Š”๊ฐ€?

์ž˜๋ชป๋œ:

fortune | head -1 && echo "ะŸะพะฒะตะทะปะพ, ะฝะพ ะฒั‹ ั€ะธัะบัƒะตั‚ะต!" || echo "WTF?"

์˜ฌ๋ฐ”๋ฅด๊ฒŒ :

  1. (fortune && echo "ะฃัะฟะตัˆะฝะพ" || echo "ะžัˆะธะฑะบะฐ") | head -1

    ์—ฌ๊ธฐ์„œ ํŒŒ์ดํ”„์˜ ์กฐ๊ธฐ ๋‹ซ๊ธฐ๋Š” ์ค‘์ฒฉ๋œ ํŒŒ์ดํ”„๋ผ์ธ(๊ด„ํ˜ธ "๋‚ด๋ถ€")์„ ์„œ๋น„์Šคํ•  ๋•Œ ๋ช…๋ น ํ•ด์„๊ธฐ์— ์˜ํ•ด ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋งŒ์•ฝ์— fortune ์ƒํƒœ์—์„œ ๋‹ซํžŒ ์ฑ„๋„์— ์“ฐ๋Š” ๋™์•ˆ ์˜ค๋ฅ˜๋ฅผ ๋ณด๊ณ ํ•œ ๋‹ค์Œ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. || echo "ะžัˆะธะฑะบะฐ" ์ฑ„๋„์ด ์ด๋ฏธ ๋‹ซํ˜€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ฌด๋ฐ๋„ ๊ฐˆ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

  2. fortune | cat - | head -1 && echo "ะฃัะฟะตัˆะฝะพ" || echo "ะžัˆะธะฑะบะฐ"

    ์œ ํ‹ธ๋ฆฌํ‹ฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. cat ์˜ค๋ฅ˜๋ฅผ ๋ฌด์‹œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋Œํผ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. EPIPE ํƒˆํ‡ด์‹œ. ๊ฒฐ๋ก ์€ ์ด ์ •๋„๋ฉด ์ถฉ๋ถ„ํ•˜๋‹ค fortune ์ž‘๊ณ (์—ฌ๋Ÿฌ ์ค„) ์ฑ„๋„ ๋ฒ„ํผ์— ๋งž์Šต๋‹ˆ๋‹ค(๋Œ€๋ถ€๋ถ„์˜ OS โ‰ฅ512K์—์„œ 64๋ฐ”์ดํŠธ ~ 4K). ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ฌธ์ œ๊ฐ€ ๋‹ค์‹œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ• EPIPE ๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ๋…น์Œ ์˜ค๋ฅ˜?

๋‹จ ํ•˜๋‚˜์˜ ์˜ฌ๋ฐ”๋ฅธ ์†”๋ฃจ์…˜์€ ์—†์ง€๋งŒ ๊ฐ„๋‹จํ•œ ๊ถŒ์žฅ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • EPIPE ํ•„์ˆ˜ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•จ (์ข…๋ฃŒ ์ƒํƒœ์— ๋ฐ˜์˜) ๋ฌด๊ฒฐ์„ฑ์ด ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•  ๋•Œ. ์˜ˆ๋ฅผ ๋“ค์–ด ์•„์นด์ด๋ฒ„ ๋˜๋Š” ๋ฐฑ์—… ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋™์•ˆ์ž…๋‹ˆ๋‹ค.
  • EPIPE ๋ฌด์‹œํ•˜๋Š” ๊ฒƒ์ด ๋‚ซ๋‹ค ์ •๋ณด ๋ฐ ๋ณด์กฐ ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•  ๋•Œ. ์˜ˆ๋ฅผ ๋“ค์–ด ์˜ต์…˜์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ฒฝ์šฐ --help ๋˜๋Š” --version.
  • ๊ฐœ๋ฐœ ์ค‘์ธ ์ฝ”๋“œ๋ฅผ ์ด์ „ ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ | head, ๊ทธ๋Ÿฐ ๋‹ค์Œ EPIPE ๋ฌด์‹œํ•˜๋Š” ๊ฒƒ์ด ์ข‹์œผ๋ฉฐ, ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ฒ˜๋ฆฌํ•˜์—ฌ ์ข…๋ฃŒ ์ƒํƒœ์— ๋ฐ˜์˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ด ๊ธฐํšŒ๋ฅผ ๋นŒ์–ด ํŒ€์›๋“ค์—๊ฒŒ ๊ฐ์‚ฌ์˜ ๋ง์”€์„ ์ „ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. MCST ะธ ์•ŒํŠธ๋ฆฌ๋ˆ…์Šค ํ›Œ๋ฅญํ•œ ์ƒ์‚ฐ์ ์ธ ์ž‘์—…์„ ์œ„ํ•ด. ๋‹น์‹ ์˜ ๊ฒฐ์‹ฌ์€ ๋†€๋ž์Šต๋‹ˆ๋‹ค!
๊ณ„์† ํž˜๋‚ด์„ธ์š” Camarades, ์œ„๋กœ ๊ฐ€์„์— ๋ชจ์ž„!

๊ฐ์‚ฌ ๋ฒ ๋ ˆ์ฆˆ ์˜คํƒ€ ๋ฐ ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด.
KDPV์˜ ์กฐ์ง€ A.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€