เดฎเตเดคเดฒเดฏเต† เดฎเดฑเดฟเด•เดŸเดจเตเดจเต เด’เดฐเต เดนเตˆเดธเตปเดฌเด—เต เด•เต‚เดŸเดฟ

เดฎเตเดคเดฒเดฏเต† เดฎเดฑเดฟเด•เดŸเดจเตเดจเต เด’เดฐเต เดนเตˆเดธเตปเดฌเด—เต เด•เต‚เดŸเดฟ

$> set -o pipefail

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

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

เด‡เดคเต fortune เดธเต‹เดชเดพเดงเดฟเด• เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เด‡เดฒเตเดฒเดพเดคเต† exit(rand()).

เด’เดจเตเดจเต เดตเดฟเดถเดฆเต€เด•เดฐเดฟเด•เตเด•เดพเดฎเต‡เดพ? เด‡เดตเดฟเดŸเต† เดŽเดจเตเดคเดพเดฃเต เด•เตเดดเดชเตเดชเด‚?

เด—เดพเดจเดฐเดšเดจ-เดšเดฐเดฟเดคเตเดฐเดชเดฐเดฎเดพเดฏ เดตเตเดฏเดคเดฟเดšเดฒเดจเด‚

เด•เดพเตฝเดจเต‚เดฑเตเดฑเดพเดฃเตเดŸเต เดฎเตเดฎเตเดชเดพเดฃเต เดˆ เดนเตˆเดธเตปเดฌเด—เดฟเดจเต† เดžเดพเตป เด†เดฆเตเดฏเดฎเดพเดฏเดฟ เดชเดฐเดฟเดšเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเดคเต. เดซเดพเด•เตโ€Œเดธเตโ€Œเดจเต†เดฑเตเดฑเดฟเดฒเต† เด—เต‡เดฑเตเดฑเตโ€Œเดตเต‡เดฏเตโ€Œเด•เตเด•เดพเดฏเดฟ เดจเดฟเดฐเดตเดงเดฟ เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต เดชเตˆเดชเตเดชเตเด•เตพ FreeBSD เดจเต เด•เต€เดดเดฟเตฝ "เดšเต†เด•เตเด•เดฑเตเด•เตพ เด•เดณเดฟเด•เตเด•เตเดจเตเดจเต". เดชเตเดฐเดคเต€เด•เตเดทเดฟเดšเตเดšเดคเตเดชเต‹เดฒเต†, เดžเดพเตป เดŽเดจเตเดจเต†เดคเตเดคเดจเตเดจเต† เดตเดฟเด•เดธเดฟเดคเดตเตเด‚ เดชเดฐเดฟเดšเดฏเดธเดฎเตเดชเดจเตเดจเดจเตเดฎเดพเดฏ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฑเดพเดฏเดฟ เด•เดฃเด•เตเด•เดพเด•เตเด•เดฟ. เด…เดคเดฟเดจเดพเตฝ, เดชเดฟเดถเด•เต เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเตฝ เดชเตเดฐเดคเตเดฏเต‡เด• เดถเตเดฐเดฆเตเดง เดšเต†เดฒเตเดคเตเดคเดฟ, เด•เดดเดฟเดฏเตเดจเตเดจเดคเตเดฐ เดถเตเดฐเดฆเตเดงเดฏเต‹เดŸเต†เดฏเตเด‚ เดถเตเดฐเดฆเตเดงเดฏเต‹เดŸเต†เดฏเตเด‚ เดŽเดฒเตเดฒเดพเด‚ เดšเต†เดฏเตเดฏเดพเตป เดžเดพเตป เด‰เดฆเตเดฆเต‡เดถเดฟเดšเตเดšเต...

เดธเต†เตปเดกเตโ€Œเดฎเต†เดฏเดฟเดฒเดฟเดฒเต†เดฏเตเด‚ uucp/uupc-เดฒเต†เดฏเตเด‚ เดฌเด—เตเด•เตพ เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดŽเตปเตเดฑเต† เดฎเตเตป เด…เดจเตเดญเดตเด‚ "เดธเดฎเด—เตเดฐเดฎเดพเดฏ เดชเดฟเดถเด•เต เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเตฝ" เดŽเตปเตเดฑเต† เด‰เดคเตเดธเดพเดนเด‚ เด•เต‚เดŸเตเดŸเดฟ. เด† เด•เดฅเดฏเตเดŸเต† เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เต เดฎเตเด™เตเด™เตเดจเตเดจเดคเดฟเตฝ เด…เตผเดคเตเดฅเดฎเดฟเดฒเตเดฒ, เดชเด•เตเดทเต‡ เดžเดพเตป เดˆ เดนเตˆเดธเต†เตปเดฌเด—เตเดฎเดพเดฏเดฟ เดฐเดฃเตเดŸเดพเดดเตเดšเด•เตเด•เดพเดฒเด‚ 10-14 เดฎเดฃเดฟเด•เตเด•เต‚เตผ เดฎเดฒเตเดฒเดฟเดŸเตเดŸเต. เด…เดคเดฟเดจเดพเตฝ, เด…เดคเต เด“เตผเดฎเตเดฎเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดŸเต, เด‡เดจเตเดจเดฒเต† เดˆ เดชเดดเดฏ เดชเดฐเดฟเดšเดฏเด•เตเด•เดพเดฐเตป เดตเต€เดฃเตเดŸเตเด‚ เดธเดจเตเดฆเตผเดถเดฟเด•เตเด•เดพเตป เดจเดฟเตผเดคเตเดคเดฟ.

TL;DR เด‰เดคเตเดคเดฐเด‚

เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟ 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')"'

เดฎเดจเตเดทเตเดฏเดจเดฟเดฒเต‡เด•เตเด•เต เดตเดฟเดตเตผเดคเตเดคเดจเด‚ เดšเต†เดฏเตเดคเต

เด…เดคเต เด‡เดตเดฟเดŸเต† เดธเดพเดงเดพเดฐเดฃเดฎเดพเดฃเต เด—เตเดจเต เดฎเต‡เด•เตเด•เต ะธ เดฌเดพเดทเต เด“เดชเตเดทเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เดฎเตเดชเตˆเดฒเตผ เดฐเต€เดคเดฟเดฏเดฟเตฝ --version เด…เดตเตป เด†เดฐเดพเดฃเต†เดจเตเดจเต เด…เดคเต เดšเต‹เดฆเดฟเด•เตเด•เตเดจเตเดจเต, เด“เดชเตโ€Œเดทเตป เดชเดฟเดจเตเดคเตเดฃเดฏเตโ€Œเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เด’เดฐเต เด…เดชเต‚เตผเดฃเตเดฃเด‚ เดšเต‡เตผเด•เตเด•เตเด‚ "เดฆเดฏเดตเดพเดฏเดฟ GCC เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ CLANG เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดพเดฏ เด•เดฎเตเดชเตˆเดฒเตผ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•".

เด‡เดทเตเดŸเดชเตเดชเต†เดŸเตเด• เดฌเต‹เดฏเดฟเดฒเตผเดชเตเดฒเต‡เดฑเตเดฑเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดคเต เดŽเดตเดฟเดŸเต†เดฏเตเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเดพเตป เด•เดดเดฟเดฏเตเด‚. เด‡เดคเต เดตเดณเดฐเต†เด•เตเด•เดพเดฒเด‚ เดฎเตเดฎเตเดชเต เดˆ เดธเตเดฅเดฒเดคเตเดคเต เดชเตเดฐเดคเตเดฏเด•เตเดทเดชเตเดชเต†เดŸเตเดŸเต, เดŽเดฒเตเดฒเดพเดฏเดฟเดŸเดคเตเดคเตเด‚ เดฎเดฟเด•เดšเตเดš เดฐเต€เดคเดฟเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดšเตเดšเต (Linux, เดธเต‹เดณเดพเดฐเดฟเดธเต, OSX, เดซเตเดฐเต€เดฌเดฟเดŽเดธเตเดกเดฟ, WSL เดคเตเดŸเด™เตเด™เดฟเดฏเดต.). เดŽเดจเตเดจเดพเตฝ เด‡เดจเตเดจเดฒเต† เด‡เตป เด†เตพเดŸเตเดŸเตLinux เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เดฎเดฟเตฝ เดŽเตฝเดฌเตเดฐเดธเต 2000 (E2K) เดžเดพเตป เดถเตเดฐเดฆเตเดงเดฟเดšเตเดšเต:

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

เดธเดคเตเดฏเด‚ เดชเดฑเดžเตเดžเดพเตฝ, เดŽเตปเตเดฑเต† เดชเดดเดฏ "เดชเดฐเดฟเดšเดฏเด•เตเด•เดพเดฐเดจเต†" เดžเดพเตป เดชเต†เดŸเตเดŸเต†เดจเตเดจเต เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดžเตเดžเดฟเดฒเตเดฒ. เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดŽเตฝเดฌเตเดฐเดธเดฟเดฒเตเด‚ Alt เด‰เตพเดชเตเดชเต†เดŸเต†เดฏเตเดณเตเดณ เดตเดฟเดตเดฟเดง เดตเดฟเดคเดฐเดฃเด™เตเด™เตพเด•เตเด•เต เด•เต€เดดเดฟเดฒเตเด‚ เดˆ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เด‡เดคเดฟเดจเด•เด‚ เดคเดจเตเดจเต† เดจเดฟเดฐเดตเดงเดฟ เดคเดตเดฃ เดชเดฐเต€เด•เตเดทเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดŸเต. เดตเดฟเดตเดฟเดง เด•เด‚เดชเตˆเดฒเดฑเตเด•เตพเด•เตเด•เตŠเดชเตเดชเด‚, เด—เตเดจเต เดฎเต‡เด•เตเด•เดฟเตปเตเดฑเต†เดฏเตเด‚ เดฌเดพเดทเดฟเตปเตเดฑเต†เดฏเตเด‚ เดชเดคเดฟเดชเตเดชเตเด•เตพ. เด…เดคเดฟเดจเดพเตฝ, เดŽเตปเตเดฑเต† เดคเต†เดฑเตเดฑเต เด‡เดตเดฟเดŸเต† เด•เดพเดฃเดพเตป เดžเดพเตป เด†เด—เตเดฐเดนเดฟเดšเตเดšเดฟเดฒเตเดฒ.

เดชเตเดฐเดถเตเดจเด‚ เดชเตเดจเตผเดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดพเดจเตเด‚ เด•เต‚เดŸเดพเดคเต†/เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดŽเดจเตเดคเดพเดฃเต เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเดคเต†เดจเตเดจเต เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดพเดจเตเด‚ เดถเตเดฐเดฎเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดšเดฟเดคเตเดฐเดฎเดพเดฏ เด•เดพเดฐเตเดฏเด™เตเด™เตพ เดธเด‚เดญเดตเดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เดฟ.
เด•เดฎเดพเตปเดกเต เดฒเตˆเตป เดธเตเดชเต†เตฝ:

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

เด‡เดŸเดฏเตโ€Œเด•เตเด•เดฟเดŸเต† เด…เดคเต เด…เดงเดฟเด• เดŸเต†เด•เตโ€Œเดธเตโ€Œเดฑเตเดฑเต เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด‚, เดชเดฟเดจเตเดจเต€เดŸเต เด…เดฒเตเดฒ... เดชเดฒเดชเตเดชเต‹เดดเตเด‚ เด“เดชเตโ€Œเดทเดจเตเด•เดณเดฟเดฒเตŠเดจเตเดจเต เดตเดณเดฐเต†เด•เตเด•เดพเดฒเด‚ เดจเต€เดฃเตเดŸเตเดจเดฟเตฝเด•เตเด•เตเด‚, เดชเด•เตเดทเต‡ เดจเดฟเด™เตเด™เตพ เด•เต‚เดŸเตเดคเตฝ เดธเดฎเดฏเด‚ เด•เตเดคเตเดคเตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŽเดฒเตเดฒเดพเดฏเตเดชเตเดชเต‹เดดเตเด‚ เดฐเดฃเตเดŸเตเด‚ เดฒเดญเดฟเด•เตเด•เตเด‚!

เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, strace เดžเด™เตเด™เดณเตเดŸเต† เดŽเดฒเตเดฒเดพเด‚! เด’เดฐเต เดธเตโ€ŒเดŸเตเดฐเต‡เดธเต เดŸเดฟเดฑเต‡เดกเต เดŸเตˆเดชเตเดชเต เดšเต†เดฏเตโ€Œเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดŽเตปเตเดฑเตผ เด…เดฎเตผเดคเตเดคเดพเตป เดธเดฎเดฏเดฎเดฟเดฒเตเดฒเดพเดคเตเดคเดคเดฟเดจเดพเตฝ, เดŽเตปเตเดฑเต† เดชเดดเดฏ เดธเตเดนเตƒเดคเตเดคเต เดฎเดฟเดธเตเดฑเตเดฑเตผ เดนเตˆเดธเต†เตปเดฌเด—เดฟเดจเต†เดฏเตเด‚ เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเดฐเต†เดฏเตเด‚ เดžเดพเตป เดคเดฟเดฐเดฟเดšเตเดšเดฑเดฟเดžเตเดžเต. เด•เดฎเตเดชเตˆเดฒเตผ เดžเดพเตป 25 เดตเตผเดทเด‚ เดฎเตเดฎเตเดชเต, เดจเตŠเดธเตเดฑเตเดฑเดพเตพเดœเดฟ... เดžเดพเตป เดธเด™เตเด•เดŸเดชเตเดชเต†เดŸเตเดŸเต เดˆ เด•เตเดฑเดฟเดชเตเดชเต เดŽเดดเตเดคเดพเตป เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต ๐Ÿ˜‰

เดตเดดเดฟเดฏเดฟเตฝ, เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เด†เดคเตเดฎเดพเดญเดฟเดฎเดพเดจเด‚ เดชเต‹เดฒเต† เดนเตˆเดธเต†เตปเดฌเด—เต, เดคเดพเดดเต† strace เดชเตเดจเตผเดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดพเดคเดฟเดฐเดฟเด•เตเด•เดพเตป เด‡เดทเตเดŸเดชเตเดชเต†เดŸเตเดจเตเดจเต.

เดŽเดจเตเดคเดพเดฃเต เดจเดŸเด•เตเด•เตเดจเตเดจเดคเต?

  • เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟ head เด…เดญเตเดฏเตผเดคเตเดฅเดฟเดšเตเดš เดตเดฐเดฟเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เดตเดพเดฏเดฟเดšเตเดšเดพเดฒเตเดŸเตป เดตเดพเดฏเดฟเด•เตเด•เตเดจเตเดจ เดšเดพเดจเตฝ เด…เดŸเดฏเตโ€Œเด•เตเด•เดพเตป เด…เดตเด•เดพเดถเดฎเตเดฃเตเดŸเต (เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเด•เดฐเด‚ เดจเดฟเตผเดฌเดจเตเดงเดฟเดคเดฎเดพเดฃเต).
  • เดกเดพเดฑเตเดฑ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจ เดชเตเดฐเต‹เด—เตเดฐเดพเด‚-เดฑเตˆเดฑเตเดฑเตผ (เดˆ เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ cc) เด•เดดเดฟเดฏเตเด‚ เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เดตเดฐเดฟเด•เตพ เด…เดšเตเดšเดŸเดฟเด•เตเด•เตเด• เด’เดชเตเดชเด‚ เดธเต— เดœเดจเตเดฏเด‚ เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เด•เต‹เดณเตเด•เดณเดฟเดฒเต‚เดŸเต† เด‡เดคเต เดšเต†เดฏเตเดฏเตเด• write().
  • เด†เดฃเต†เด™เตเด•เดฟเตฝ เดŽเดดเตเดคเตเดคเตเด•เดพเดฐเตปเตเดฑเต† เดญเดพเด—เดคเตเดคเต เดฑเต†เด•เตเด•เต‹เตผเดกเดฟเด‚เด—เต เด…เดตเดธเดพเดจเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเดฎเตเดชเต เดตเดพเดฏเดจเด•เตเด•เดพเดฐเดจเต เด…เดตเตปเตเดฑเต† เดตเดถเดคเตเดคเต เดšเดพเดจเตฝ เด…เดŸเดฏเตเด•เตเด•เดพเตป เดธเดฎเดฏเดฎเตเดฃเตเดŸเดพเด•เตเด‚, เดคเตเดŸเตผเดจเตเดจเต เดŽเดดเตเดคเตเดคเตเด•เดพเดฐเดจเต เด’เดฐเต เดชเดฟเดถเด•เต เดฒเดญเดฟเด•เตเด•เตเด‚.
  • เดฑเตˆเดฑเตเดฑเตผ เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เด…เดตเด•เดพเดถเดฎเตเดฃเตเดŸเต เดฐเดฃเตเดŸเตเด‚ เดšเดพเดจเตฝ เดฑเตˆเดฑเตเดฑเต เดชเดฟเดถเด•เต เด…เดตเด—เดฃเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเต‚เตผเดคเตเดคเต€เด•เดฐเดฃ เด•เต‹เดกเดฟเตฝ เด…เดคเต เดชเตเดฐเดคเดฟเดซเดฒเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.
  • เด‡เตปเดธเตเดฑเตเดฑเดฒเต‡เดทเตป เด•เดพเดฐเดฃเด‚ set -o pipefail เด•เตเดฑเดžเตเดžเดคเต เด’เดฐเต เด˜เดŸเด•เดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต†เด™เตเด•เดฟเดฒเตเด‚ เดซเดฒเด‚ เดชเต‚เดœเตเดฏเดฎเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเตˆเดชเตเดชเตเดฒเตˆเตป เดชเต‚เตผเดคเตเดคเต€เด•เดฐเดฃ เด•เต‹เดกเต เดชเต‚เดœเตเดฏเดฎเดฒเตเดฒ (เดคเต†เดฑเตเดฑเดพเดฏเดคเต) เด†เดฏเดฟเดฐเดฟเด•เตเด•เตเด‚, เดคเตเดŸเตผเดจเตเดจเต เด…เดคเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด‚ || echo "Please use GCC or CLANG compatible compiler".

เดฑเตˆเดฑเตเดฑเตผ เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เดธเดฟเด—เตเดจเดฒเตเด•เดณเตเดฎเดพเดฏเดฟ เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต เดŽเดจเตเดจเดคเดฟเดจเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเต เดตเตเดฏเดคเตเดฏเดพเดธเด™เตเด™เตพ เด‰เดฃเตเดŸเดพเด•เดพเด‚. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เด…เดธเดพเดงเดพเดฐเดฃเดฎเดพเดฏเดฟ เด…เดตเดธเดพเดจเดฟเดšเตเดšเต‡เด•เตเด•เดพเด‚ (เดชเต‚เดœเตเดฏเด‚/เดชเดฟเดถเด•เดฒเตเดฒเดพเดคเตเดค เด…เดตเดธเดพเดจเดฟเดชเตเดชเดฟเด•เตเด•เตฝ เดจเดฟเดฒเดฏเตเดŸเต† เดธเตเดตเดฏเดฎเต‡เดตเดฏเตเดณเตเดณ เดœเดจเดฑเต‡เดทเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต), เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ 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 เดšเต†เดฑเตเดคเตเด‚ (เดจเดฟเดฐเดตเดงเดฟ เดตเดฐเดฟเด•เตพ) เดšเดพเดจเตฝ เดฌเดซเดฑเดฟเตฝ เดฏเต‹เดœเดฟเด•เตเด•เตเดจเตเดจเต (512 เดฌเตˆเดฑเตเดฑเตเด•เตพ เดฎเตเดคเตฝ โ‰ˆ64K เดตเดฐเต†, เดฎเดฟเด•เตเด• OS-เดฒเตเด‚ โ‰ฅ4K). เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เดชเตเดฐเดถเตเดจเด‚ เดตเต€เดฃเตเดŸเตเด‚ เดตเดฐเดพเด‚.

เดŽเด™เตเด™เดจเต† เดถเดฐเดฟเดฏเดพเดฏเดฟ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเดพเด‚ EPIPE เดฎเดฑเตเดฑเต เดฑเต†เด•เตเด•เต‹เตผเดกเดฟเด‚เด—เต เดชเดฟเดถเด•เตเด•เดณเตเด‚?

เด’เดฐเตŠเดฑเตเดฑ เดถเดฐเดฟเดฏเดพเดฏ เดชเดฐเดฟเดนเดพเดฐเดฎเดฟเดฒเตเดฒ, เดŽเดจเตเดจเดพเตฝ เดฒเดณเดฟเดคเดฎเดพเดฏ เดถเตเดชเดพเตผเดถเด•เตพ เด‰เดฃเตเดŸเต:

  • EPIPE เด†เดตเดถเตเดฏเดฎเดพเดฃเต เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเดฃเด‚ (เด’เดชเตเดชเด‚ เดŽเด•เตเดธเดฟเดฑเตเดฑเต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดธเดฟเตฝ เดชเตเดฐเดคเดฟเดซเดฒเดฟเด•เตเด•เตเดจเตเดจเต) เดธเดฎเด—เตเดฐเดค เด†เดตเดถเตเดฏเดฎเตเดณเตเดณ เดกเดพเดฑเตเดฑ เด”เดŸเตเดŸเตเดชเตเดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด†เตผเด•เตเด•เตˆเดตเดฑเตเด•เตพ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฌเดพเด•เตเด•เดชเตเดชเต เดฏเต‚เดŸเตเดŸเดฟเดฒเดฟเดฑเตเดฑเดฟเด•เดณเตเดŸเต† เดชเตเดฐเดตเตผเดคเตเดคเดจ เดธเดฎเดฏเดคเตเดคเต.
  • EPIPE เด…เดตเด—เดฃเดฟเด•เตเด•เตเดจเตเดจเดคเดพเดฃเต เดจเดฒเตเดฒเดคเต เดตเดฟเดตเดฐเด™เตเด™เดณเตเด‚ เดธเดนเดพเดฏ เดธเดจเตเดฆเต‡เดถเด™เตเด™เดณเตเด‚ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด“เดชเตเดทเดจเตเด•เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเดฟเดตเดฐเด™เตเด™เตพ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ --help เด…เดฅเดตเดพ --version.
  • เดตเดฟเด•เดธเดฟเดชเตเดชเดฟเดšเตเดšเต†เดŸเตเด•เตเด•เตเดจเตเดจ เด•เต‹เดกเต เดฎเตเดฎเตเดชเต เด’เดฐเต เดชเตˆเดชเตเดชเตเดฒเตˆเดจเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดฎเต†เด™เตเด•เดฟเตฝ | head, เดชเดฟเดจเตเดจเต† EPIPE เด…เดตเด—เดฃเดฟเด•เตเด•เตเดจเตเดจเดคเดพเดฃเต เดจเดฒเตเดฒเดคเต, เด…เดฒเตเดฒเดพเดคเตเดคเดชเด•เตเดทเด‚ เดŽเด•เตเดธเดฟเดฑเตเดฑเต เดธเตเดฑเตเดฑเดพเดฑเตเดฑเดธเดฟเตฝ เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดคเต เดชเตเดฐเดคเดฟเดซเดฒเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดพเดฃเต เดจเดฒเตเดฒเดคเต.

เดŸเต€เดฎเตเด•เดณเต‹เดŸเต เดŽเตปเตเดฑเต† เดจเดจเตเดฆเดฟ เด…เดฑเดฟเดฏเดฟเด•เตเด•เดพเตป เดˆ เด…เดตเดธเดฐเดคเตเดคเดฟเตฝ เดžเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต เดŽเด‚.เดธเดฟ.เดŽเดธเต.เดŸเดฟ ะธ เด†เตพเดŸเตเดŸเตLinux เดฎเดนเดคเตเดคเดพเดฏ เด‰เตฝเดชเตเดชเดพเดฆเดจเด•เตเดทเดฎเดคเดฏเตเดณเตเดณ เดœเต‹เดฒเดฟเด•เตพเด•เตเด•เดพเดฏเดฟ. เดจเดฟเด™เตเด™เดณเตเดŸเต† เดฆเตƒเดขเดจเดฟเดถเตเดšเดฏเด‚ เด…เดคเดฟเดถเดฏเด•เดฐเดฎเดพเดฃเต!
เด•เดพเดฎเดฑเต‡เดกเตเดธเต, เด…เดชเตเดชเต เดตเต€เดดเตเดšเดฏเดฟเตฝ เดฎเต€เดฑเตเดฑเดฟเด‚เด—เตเด•เตพ!

ะกะฟะฐัะธะฑะพ เดฌเต†เดฑเต†เดธเต เด…เด•เตเดทเดฐเดคเตเดคเต†เดฑเตเดฑเตเด•เดณเตเด‚ เดชเดฟเดถเด•เตเด•เดณเตเด‚ เดคเดฟเดฐเตเดคเตเดคเตเดจเตเดจเดคเดฟเดจเต.
เดจเดฟเดจเตเดจเต เด•เต†.เดกเดฟ.เดชเดฟ.เดตเดฟ เดœเต‹เตผเดœเดฟ เดŽ.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

DDoS เดชเดฐเดฟเดฐเด•เตเดทเดฏเตเดณเตเดณ เดธเตˆเดฑเตเดฑเตเด•เตพเด•เตเด•เดพเดฏเดฟ เดตเดฟเดถเตเดตเดธเดจเต€เดฏเดฎเดพเดฏ เดนเต‹เดธเตเดฑเตเดฑเดฟเด‚เด—เต เดตเดพเด™เตเด™เตเด•, VPS VDS เดธเต†เตผเดตเดฑเตเด•เตพ ๐Ÿ”ฅ DDoS เดชเดฐเดฟเดฐเด•เตเดท, VPS VDS เดธเต†เตผเดตเดฑเตเด•เตพ เด‰เดณเตเดณ เดตเดฟเดถเตเดตเดธเดจเต€เดฏเดฎเดพเดฏ เดตเต†เดฌเตโ€Œเดธเตˆเดฑเตเดฑเต เดนเต‹เดธเตเดฑเตเดฑเดฟเด‚เด—เต เดตเดพเด™เตเด™เต‚ | ProHoster