рдЧреЛрд╣реАрд▓рд╛рдИ рдкрд╛рд░ рдЧрд░реНрджреИ рдЕрд░реНрдХреЛ рд╣рд╛рдЗрдЬреЗрдирдмрдЧ

рдЧреЛрд╣реАрд▓рд╛рдИ рдкрд╛рд░ рдЧрд░реНрджреИ рдЕрд░реНрдХреЛ рд╣рд╛рдЗрдЬреЗрдирдмрдЧ

$> set -o pipefail

$> fortune | head -1 > /dev/null && echo "╨Я╨╛╨▓╨╡╨╖╨╗╨╛!" || echo "╨Т╤Л ╨┐╤А╨╛╨╕╨│╤А╨░╨╗╨╕"
╨Я╨╛╨▓╨╡╨╖╨╗╨╛!

$> fortune | head -1 > /dev/null && echo "╨Я╨╛╨▓╨╡╨╖╨╗╨╛!" || echo "╨Т╤Л ╨┐╤А╨╛╨╕╨│╤А╨░╨╗╨╕"
╨Т╤Л ╨┐╤А╨╛╨╕╨│╤А╨░╨╗╨╕

рдпреЛ рдЫ fortune рдмрд┐рдирд╛ рд╕рд╢рд░реНрдд рдХрд╛рд░реНрдпрдХреНрд░рдо exit(rand()).

рдХреЗ рддрдкрд╛рдИрдВ рдмреБрдЭрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ? рдпрд╣рд╛рдБ рдХреЗ рдЧрд▓рдд рдЫ?

рдЧреАрддрд╛рддреНрдордХ-рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд╡рд┐рд╖рдпрд╛рдиреНрддрд░

рдореИрд▓реЗ рдкрд╣рд┐рд▓реЛ рдкрдЯрдХ рдпреЛ рд╣рд╛рдЗрдЬреЗрдирдмрдЧрд╕рдБрдЧ рдПрдХ рдЪреМрдерд╛рдИ рд╢рддрд╛рдмреНрджреА рдЕрдШрд┐ рдкрд░рд┐рдЪрд┐рдд рднрдПрдБред рддреНрдпрд╕рдкрдЫрд┐ FaxNET рдорд╛ рдЧреЗрдЯрд╡реЗрдХреЛ рд▓рд╛рдЧрд┐ рдпреЛ рдорд╛рд░реНрдлрдд рдзреЗрд░реИ рдЙрдкрдпреЛрдЧрд┐рддрд╛рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдерд┐рдпреЛ рдкрд╛рдЗрдкрд╣рд░реВ 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')"'

рдорд╛рдирд╡рдорд╛ рдЕрдиреБрд╡рд╛рдж рдЧрд░рд┐рдпреЛ

рдпреЛ рдпрд╣рд╛рдБ рдХреЛ рд▓рд╛рдЧреА рд╕рд╛рдорд╛рдиреНрдп рдЫ GNU рдмрдирд╛рдЙрдиреБрд╣реЛрд╕реН ╨╕ рдмрд╛рд╢ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХрдореНрдкрд╛рдЗрд▓рд░ рддрд░рд┐рдХрд╛рдорд╛ --version рдпрд╕рд▓реЗ рдК рдХреЛ рд╣реЛ рднрдиреЗрд░ рд╕реЛрдзреНрдЫ, рд░ рдпрджрд┐ рд╡рд┐рдХрд▓реНрдк рд╕рдорд░реНрдерд┐рдд рдЫреИрди рднрдиреЗ, рддреНрдпрд╕рдкрдЫрд┐ рд╕реНрдЯрдм рд╕рдореНрдорд┐рд▓рд┐рдд рд╣реБрдиреНрдЫ "рдХреГрдкрдпрд╛ GCC рд╡рд╛ CLANG рд╕рдВрдЧрдд рдХрдореНрдкрд╛рдЗрд▓рд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН".

рдордирдкрд░реНтАНрдпреЛ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдЬрд╣рд╛рдБ рдкрдирд┐ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рдиреНрдЫред рдпреЛ рдзреЗрд░реИ рдкрд╣рд┐рд▓реЗ рдпреЛ рдард╛рдЙрдБрдорд╛ рджреЗрдЦрд╛ рдкрд░реНтАНрдпреЛ рд░ рдЬрддрд╛рддрддреИ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНтАНрдпреЛ (Linux, Solaris, OSX, FreeBSD, WSL рдЖрджрд┐)ред рддрд░ рд╣рд┐рдЬреЛ рдорд╛ altlinux рдкреНрд▓реЗрдЯрдлрд░реНрдордорд╛ Elbrus 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 рд╣рд╛рдореНрд░реЛ рд╕рдмреИ рдХреБрд░рд╛! рд░ рдПрдХ strace tirade рдЯрд╛рдЗрдк рдЧрд░реЗрдкрдЫрд┐, рддрд░ рдЗрдиреНрдЯрд░ рдерд┐рдЪреНрдиреЗ рд╕рдордп рдирд╣реБрдБрджрд╛, рдореИрд▓реЗ рдореЗрд░реЛ рдкреБрд░рд╛рдиреЛ рдорд┐рддреНрд░ рд╢реНрд░реА рд╣рд╛рдЗрдЬреЗрдирдмрдЧ рд░ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓рд╛рдИ рдЪрд┐рдиреЗрдБред рдХрдореНрдкрд╛рдЗрд▓рд░ рдо реирел рд╡рд░реНрд╖ рдкрд╣рд┐рд▓реЗ, рдиреЛрд╕реНрдЯрд╛рд▓реНрдЬреАтАж рд░ рдореИрд▓реЗ рджреБрдГрдЦреА рднрдПрд░ рдпреЛ рдиреЛрдЯ рд▓реЗрдЦреНрдиреЗ рдирд┐рд░реНрдгрдп рдЧрд░реЗрдВ

рд╡реИрд╕реЗ, рдХреБрдиреИ рдкрдирд┐ рд╕реНрд╡рд╛рднрд┐рдорд╛рдиреА рдЬрд╕реНрддреИ рд╣рд╛рдЗрдЬреЗрдирдмрдЧрдЕрдиреНрддрд░реНрдЧрдд 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 рд╕рд╛рдиреЛ (рдзреЗрд░реИ рд▓рд╛рдЗрдирд╣рд░реВ) рд░ рдЪреНрдпрд╛рдирд▓ рдмрдлрд░рдорд╛ рдлрд┐рдЯ рд╣реБрдиреНрдЫ (релрезреи рдмрд╛рдЗрдЯреНрд╕ рджреЗрдЦрд┐ тЙИ512K рд╕рдореНрдо, рдзреЗрд░реИ рдЬрд╕реЛ OS тЙе64K рдорд╛)ред рдЕрдиреНрдпрдерд╛ рд╕рдорд╕реНрдпрд╛ рдлреЗрд░рд┐ рдЖрдЙрди рд╕рдХреНрдЫред

рдХрд╕рд░реА рд╕рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЧрд░реНрдиреЗ EPIPE рд░ рдЕрдиреНрдп рд░реЗрдХрд░реНрдбрд┐рдЩ рддреНрд░реБрдЯрд┐рд╣рд░реВ?

рддреНрдпрд╣рд╛рдБ рдХреБрдиреИ рдПрдХрд▓ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рдЫреИрди, рддрд░ рддреНрдпрд╣рд╛рдБ рд╕рд╛рдзрд╛рд░рдг рд╕рд┐рдлрд╛рд░рд┐рд╕рд╣рд░реВ рдЫрдиреН:

  • EPIPE рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрдиреБрдкрд░реНрдЫ (рд░ рдирд┐рдХрд╛рд╕ рд╕реНрдерд┐рддрд┐рдорд╛ рдкреНрд░рддрд┐рдмрд┐рдореНрдмрд┐рдд) рдЬрдм рдбреЗрдЯрд╛ рдЖрдЙрдЯрдкреБрдЯ рдЧрд░реНрджрд╛ рдЕрдЦрдгреНрдбрддрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реБрдиреНрдЫред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, archivers рд╡рд╛ рдЬрдЧреЗрдбрд╛ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рд╕рдЮреНрдЪрд╛рд▓рди рдХреЛ рд╕рдордпрдорд╛ред
  • EPIPE рдмреЗрд╡рд╛рд╕реНрддрд╛ рдЧрд░реНрдиреБ рд░рд╛рдореНрд░реЛ рдЬрд╛рдирдХрд╛рд░реА рд░ рд╕рд╣рд╛рдпрдХ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрджрд╛ред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд╡рд┐рдХрд▓реНрдкрд╣рд░реВрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрджрд╛ --help рд╡рд╛ --version.
  • рдпрджрд┐ рдХреЛрдб рд╡рд┐рдХрд╛рд╕ рднрдЗрд░рд╣реЗрдХреЛ рдЫ рднрдиреЗ рдкрд╣рд┐рд▓реЗ рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ | head, рддреНрдпрд╕рдкрдЫрд┐ EPIPE рдпреЛ рдмреЗрд╡рд╛рд╕реНрддрд╛ рдЧрд░реНрди рд░рд╛рдореНрд░реЛ рдЫ, рдЕрдиреНрдпрдерд╛ рдпреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд░ рдирд┐рдХрд╛рд╕ рд╕реНрдерд┐рддрд┐ рдорд╛ рдкреНрд░рддрд┐рдмрд┐рдореНрдмрд┐рдд рдЧрд░реНрди рд░рд╛рдореНрд░реЛ рдЫред

рдо рдЯреЛрд▓реАрд╣рд░реВрд▓рд╛рдИ рдореЗрд░реЛ рдХреГрддрдЬреНрдЮрддрд╛ рд╡реНрдпрдХреНрдд рдЧрд░реНрди рдпреЛ рдЕрд╡рд╕рд░ рд▓рд┐рди рдЪрд╛рд╣рдиреНрдЫреБ MCST ╨╕ altlinux рдЙрддреНрдХреГрд╖реНрдЯ рдЙрддреНрдкрд╛рджрдХ рдХрд╛рд░реНрдпрдХреЛ рд▓рд╛рдЧрд┐ред рддрдкрд╛рдИрдВрдХреЛ рджреГрдв рд╕рдВрдХрд▓реНрдк рдЕрджреНрднреБрдд рдЫ!
рдпрд╕рд▓рд╛рдИ рдЬрд╛рд░реА рд░рд╛рдЦреНрдиреБрд╣реЛрд╕реН Camarades, рдорд╛рдерд┐ рд╢рд░рдж рдЛрддреБрдорд╛ рдмреИрдардХрд╣рд░реВ!

╨б╨┐╨░╤Б╨╕╨▒╨╛ berez рдЯрд╛рдЗрдк рд░ рддреНрд░реБрдЯрд┐рд╣рд░реВ рд╕рдЪреНрдпрд╛рдЙрдирдХрд╛ рд▓рд╛рдЧрд┐ред
KDPV рдмрд╛рдЯ рдЬреНрдпреЛрд░реНрдЬреА рдПред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди