рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдо: рддреАрди рд╕рдЬрд┐рд▓реЛ рдЯреБрдХреНрд░рд╛ред рднрд╛рдЧ рей: рдкреНрд░рдХреНрд░рд┐рдпрд╛ API (рдЕрдиреБрд╡рд╛рдж)

рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдкрд░рд┐рдЪрдп

рдирдорд╕реНрддреЗ, Habr! рдо рддрдкрд╛рдЗрдБрдХреЛ рдзреНрдпрд╛рди рдорд╛ рд▓реЗрдЦ рдХреЛ рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкреНрд░рд╕реНрддреБрдд рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреБ - рдПрдХ рд╕рд╛рд╣рд┐рддреНрдп рдХреЛ рдЕрдиреБрд╡рд╛рдж рдЬреБрди рдореЗрд░реЛ рд╡рд┐рдЪрд╛рд░ рдорд╛ рд░реЛрдЪрдХ рдЫ - OSTEPред рдпреЛ рд╕рд╛рдордЧреНрд░реАрд▓реЗ рдпреБрдирд┐рдХреНрд╕-рдЬрд╕реНрддреЛ рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдорд╣рд░реВрдХреЛ рдХрд╛рдорд▓рд╛рдИ рдЧрд╣рд┐рд░реЛ рд░реВрдкрдорд╛ рдЬрд╛рдБрдЪреНрдЫ, рдЕрд░реНрдерд╛рддреН, рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ, рд╡рд┐рднрд┐рдиреНрди рд╢реЗрдбреНрдпреВрд▓рд░рд╣рд░реВ, рдореЗрдореЛрд░реА рд░ рдЕрдиреНрдп рд╕рдорд╛рди рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рдЬрд╕рд▓реЗ рдЖрдзреБрдирд┐рдХ рдУрдПрд╕ рдмрдирд╛рдЙрдБрдЫред рддрдкрд╛рдИрдВ рдпрд╣рд╛рдБ рд╕рдмреИ рд╕рд╛рдордЧреНрд░реАрдХреЛ рдореВрд▓ рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдпрд╣рд╛рдБред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН рдХрд┐ рдЕрдиреБрд╡рд╛рдж рдЕрд╡реНрдпрд╡рд╕рд╛рдпрд┐рдХ рд░реВрдкрдорд╛ (рдзреЗрд░реИ рд╕реНрд╡рддрдиреНрддреНрд░ рд░реВрдкрдорд╛) рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рддрд░ рдорд▓рд╛рдИ рдЖрд╢рд╛ рдЫ рдХрд┐ рдореИрд▓реЗ рд╕рд╛рдорд╛рдиреНрдп рдЕрд░реНрде рд░рд╛рдЦреЗрдХреЛ рдЫреБред

рдпрд╕ рд╡рд┐рд╖рдпрдорд╛ рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рдХрд╛рдо рдпрд╣рд╛рдБ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рдиреНрдЫ:

рдЕрдиреНрдп рднрд╛рдЧрд╣рд░реВ:

рддрдкрд╛рдИрдВ рдореЗрд░реЛ рдЪреНрдпрд╛рдирд▓ рдорд╛ рдкрдирд┐ рдЬрд╛рдБрдЪ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо =)

рдЕрд▓рд╛рд░реНрдо! рдпреЛ рд╡реНрдпрд╛рдЦреНрдпрд╛рди рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдкреНрд░рдпреЛрдЧрд╢рд╛рд▓рд╛ рдЫ! рд╣реЗрд░ github

рдкреНрд░рдХреНрд░рд┐рдпрд╛ API

UNIX рдкреНрд░рдгрд╛рд▓реАрдорд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рдЙрджрд╛рд╣рд░рдг рд╣реЗрд░реМрдВред рдпреЛ рджреБрдИ рдкреНрд░рдгрд╛рд▓реА рдХрд▓ рдорд╛рд░реНрдлрдд рд╣реБрдиреНрдЫ рдХрд╛рдБрдЯрд╛() ╨╕ exec().

рдХрд▓ рдлреЛрд░реНрдХ()

рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдо: рддреАрди рд╕рдЬрд┐рд▓реЛ рдЯреБрдХреНрд░рд╛ред рднрд╛рдЧ рей: рдкреНрд░рдХреНрд░рд┐рдпрд╛ API (рдЕрдиреБрд╡рд╛рдж)

рдлреЛрд░реНрдХ() рдХрд▓ рдЧрд░реНрдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд▓рд╛рдИ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдпрд╕рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рдирддрд┐рдЬрд╛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реБрдиреЗрдЫред

рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдо: рддреАрди рд╕рдЬрд┐рд▓реЛ рдЯреБрдХреНрд░рд╛ред рднрд╛рдЧ рей: рдкреНрд░рдХреНрд░рд┐рдпрд╛ API (рдЕрдиреБрд╡рд╛рдж)

рд╕рдмреИ рднрдиреНрджрд╛ рдкрд╣рд┐рд▓реЗ, рд╣рд╛рдореА main() рдкреНрд░рдХрд╛рд░реНрдп рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрдЫреМрдВ рд░ рд╕реНрдХреНрд░рд┐рдирдорд╛ рд╕реНрдЯреНрд░рд┐рдЩ рдкреНрд░рд┐рдиреНрдЯ рдЧрд░реНрдЫреМрдВред рд░реЗрдЦрд╛рд▓реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ рдЬреБрди рдореВрд▓рдорд╛ рднрдирд┐рдиреНрдЫ рдкреАрдЖрдИрдбреА рд╡рд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ред рдпреЛ рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ UNIX рдорд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рд╕рдиреНрджрд░реНрдн рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рдЕрд░реНрдХреЛ рдЖрджреЗрд╢рд▓реЗ рдлреЛрд░реНрдХ () рд▓рд╛рдИ рдХрд▓ рдЧрд░реНрдиреЗрдЫред рдпрд╕ рдмрд┐рдиреНрджреБрдорд╛, рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рд▓рдЧрднрдЧ рд╕рдЯреАрдХ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдЫред OS рдХреЛ рд▓рд╛рдЧрд┐, рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ рдХрд┐ рддреНрдпрд╣рд╛рдБ рдкреНрд░рдгрд╛рд▓реАрдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдПрдЙрдЯреИ рдкреНрд░реЛрдЧреНрд░рд╛рдордХреЛ 2 рдкреНрд░рддрд┐рд▓рд┐рдкрд┐рд╣рд░реВ рдЫрдиреН, рдЬрд╕рд▓реЗ рдлрд▓рд╕реНрд╡рд░реВрдк рдлреЛрд░реНрдХ() рдкреНрд░рдХрд╛рд░реНрдпрдмрд╛рдЯ рдмрд╛рд╣рд┐рд░ рдирд┐рд╕реНрдХрдиреНрдЫред рдирдпрд╛рдБ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдЪрд╛рдЗрд▓реНрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ (рдпрд╕рд▓рд╛рдИ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реЗрдХреЛ рдЕрднрд┐рднрд╛рд╡рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рд╕рдореНрдмрдиреНрдзрдорд╛) рдЕрдм рдореБрдЦреНрдп() рдкреНрд░рдХрд╛рд░реНрдпрдмрд╛рдЯ рд╕реБрд░реБ рдЧрд░реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдиреЗ рдЫреИрдиред рдпреЛ рдпрд╛рдж рд░рд╛рдЦреНрдиреБ рдкрд░реНрдЫ рдХрд┐ рдмрдЪреНрдЪрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрднрд┐рднрд╛рд╡рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рд╕рд╣реА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рд╣реЛрдЗрди; рд╡рд┐рд╢реЗрд╖ рдЧрд░реА, рдпрд╕рдХреЛ рдЖрдлреНрдиреИ рдареЗрдЧрд╛рдирд╛ рдард╛рдЙрдБ, рдпрд╕рдХреЛ рдЖрдлреНрдиреИ рджрд░реНрддрд╛рд╣рд░реВ, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдпреЛрдЧреНрдп рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВрдХреЛ рдЖрдлреНрдиреИ рд╕реВрдЪрдХ, рд░ рдЬрд╕реНрддреИред рдпрд╕рд░реА, рдлреЛрд░реНрдХ() рдкреНрд░рдХрд╛рд░реНрдпрдХреЛ рдХрд▓рд░рдорд╛ рдлрд░реНрдХрд╛рдЗрдПрдХреЛ рдорд╛рди рдлрд░рдХ рд╣реБрдиреЗрдЫред рд╡рд┐рд╢реЗрд╖ рдЧрд░реА, рдЕрднрд┐рднрд╛рд╡рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓реЗ рдлрд┐рд░реНрддрд╛рдХреЛ рд░реВрдкрдорд╛ рдмрд╛рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ PID рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫ, рд░ рдмрдЪреНрдЪрд╛рд▓реЗ реж рдмрд░рд╛рдмрд░рдХреЛ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫред рдпреА рдлрд┐рд░реНрддреА рдХреЛрдбрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рддрдкрд╛рдЗрдБ рддреНрдпрд╕рдкрдЫрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдЕрд▓рдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ рдкреНрд░рддреНрдпреЗрдХрд▓рд╛рдИ рдЖрдлреНрдиреИ рдХрд╛рдо рдЧрд░реНрди рдмрд╛рдзреНрдп рдкрд╛рд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред ред рдпрджреНрдпрдкрд┐, рдпреЛ рдХрд╛рд░реНрдпрдХреНрд░рдордХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирд▓рд╛рдИ рдХрдбрд╛рдЗрдХрд╛ рд╕рд╛рде рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫреИрдиред 0 рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрдорд╛ рд╡рд┐рднрд╛рдЬрди рдЧрд░реЗрдкрдЫрд┐, OS рд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░реНрди рдерд╛рд▓реНрдЫ, рд╕рд╛рдереИ рддрд┐рдиреАрд╣рд░реВрдХреЛ рдХрд╛рдордХреЛ рдпреЛрдЬрдирд╛ рдмрдирд╛рдЙрдБрдЫред рдпрджрд┐ рдПрдХрд▓-рдХреЛрд░ рдкреНрд░реЛрд╕реЗрд╕рд░рдорд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдпреЛ рднрдиреЗ, рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдордзреНрдпреЗ рдПрдЙрдЯрд╛, рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛ рдЕрднрд┐рднрд╛рд╡рдХрд▓реЗ рдХрд╛рдо рдЧрд░рд┐рд░рд╣рдиреЗрдЫ, рд░ рддреНрдпрд╕рдкрдЫрд┐ рдмрд╛рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓реЗ рдирд┐рдпрдиреНрддреНрд░рдг рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫред рдкреБрди: рд╕реБрд░реБ рдЧрд░реНрджрд╛, рд╕реНрдерд┐рддрд┐ рдлрд░рдХ рд╣реБрди рд╕рдХреНрдЫред

рдХрд▓ рдкреНрд░рддреАрдХреНрд╖рд╛ ()

рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдо: рддреАрди рд╕рдЬрд┐рд▓реЛ рдЯреБрдХреНрд░рд╛ред рднрд╛рдЧ рей: рдкреНрд░рдХреНрд░рд┐рдпрд╛ API (рдЕрдиреБрд╡рд╛рдж)

рдирд┐рдореНрди рдХрд╛рд░реНрдпрдХреНрд░рдорд▓рд╛рдИ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдпрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдордорд╛ рдХрд▓рдХреЛ рдЙрдкрд╕реНрдерд┐рддрд┐рдХреЛ рдХрд╛рд░рдг рдкрд░реНрдЦ () рдЕрднрд┐рднрд╛рд╡рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓реЗ рд╕рдзреИрдВ рдмрдЪреНрдЪрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд░рд╛ рд╣реБрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрдиреЗрдЫред рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рд╣рд╛рдореАрд▓реЗ рд╕реНрдХреНрд░рд┐рдирдорд╛ рдХрдбрд╛ рд░реВрдкрдорд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкрд╛рда рдЖрдЙрдЯрдкреБрдЯ рдкрд╛рдЙрдиреЗрдЫреМрдВ

рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдо: рддреАрди рд╕рдЬрд┐рд▓реЛ рдЯреБрдХреНрд░рд╛ред рднрд╛рдЧ рей: рдкреНрд░рдХреНрд░рд┐рдпрд╛ API (рдЕрдиреБрд╡рд╛рдж)

exec() рдХрд▓ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдо: рддреАрди рд╕рдЬрд┐рд▓реЛ рдЯреБрдХреНрд░рд╛ред рднрд╛рдЧ рей: рдкреНрд░рдХреНрд░рд┐рдпрд╛ API (рдЕрдиреБрд╡рд╛рдж)

рдЪреБрдиреМрддреАрд▓рд╛рдИ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрдиреБрд╣реЛрд╕реН exec()ред рдпреЛ рдкреНрд░рдгрд╛рд▓реА рдХрд▓ рдЙрдкрдпреЛрдЧреА рдЫ рдЬрдм рд╣рд╛рдореА рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдлрд░рдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЪрд▓рд╛рдЙрди рдЪрд╛рд╣рдиреНрдЫреМрдВред рдпрд╣рд╛рдБ рд╣рд╛рдореА рдХрд▓ рдЧрд░реНрдиреЗрдЫреМрдВ execvp() wc рдХрд╛рд░реНрдпрдХреНрд░рдо рдЪрд▓рд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рдЬреБрди рд╢рдмреНрдж рдЧрдгрдирд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реЛред exec() рднрдирд┐рдиреНрдЫ рднрдиреЗ рдХреЗ рд╣реБрдиреНрдЫ? рдпреЛ рдХрд▓рд▓рд╛рдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдпреЛрдЧреНрдп рдлрд╛рдЗрд▓рдХреЛ рдирд╛рдо рд░ рддрд░реНрдХрдХреЛ рд░реВрдкрдорд╛ рдХреЗрд╣реА рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдкрд╛рд░рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫред рдЬрд╕ рдкрдЫрд┐ рдпреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдпреЛрдЧреНрдп рдлрд╛рдЗрд▓рдмрд╛рдЯ рдХреЛрдб рд░ рд╕реНрдерд┐рд░ рдбрд╛рдЯрд╛ рд▓реЛрдб рд╣реБрдиреНрдЫ рд░ рдХреЛрдбрдХреЛ рд╕рд╛рде рдпрд╕рдХреЛ рдЖрдлреНрдиреИ рдЦрдгреНрдб рдУрднрд░рд░рд╛рдЗрдЯ рд╣реБрдиреНрдЫред рдмрд╛рдБрдХреА рдореЗрдореЛрд░реА рдХреНрд╖реЗрддреНрд░рд╣рд░реВ, рдЬрд╕реНрддреИ рд╕реНрдЯреНрдпрд╛рдХ рд░ рд╣рд┐рдк, рдкреБрди: рдкреНрд░рд╛рд░рдореНрдн рдЧрд░рд┐рдПрдХреЛ рдЫред рдЬрд╕ рдкрдЫрд┐ OS рд▓реЗ рдХрд╛рд░реНрдпрдХреНрд░рдорд▓рд╛рдИ рд╕рд░рд▓ рд░реВрдкрдорд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрджрдЫ, рдпрд╕рд▓рд╛рдИ рддрд░реНрдХрд╣рд░реВрдХреЛ рд╕реЗрдЯ рдкрд╛рд╕ рдЧрд░реНрджреИред рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореАрд▓реЗ рдирдпрд╛рдБ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реЗрдХрд╛ рдЫреИрдиреМрдВ, рд╣рд╛рдореАрд▓реЗ рд╣рд╛рд▓ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдХрд╛рд░реНрдпрдХреНрд░рдорд▓рд╛рдИ рдЕрд░реНрдХреЛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдХрд╛рд░реНрдпрдХреНрд░рдордорд╛ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реЗрдХрд╛ рдЫреМрдВред рд╡рдВрд╢рдЬрдорд╛ exec() рдХрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рд╕рдХреЗрдкрдЫрд┐, рдореВрд▓ рдХрд╛рд░реНрдпрдХреНрд░рдо рдиреИ рдЪрд▓реЗрдХреЛ рдЫреИрди рдЬрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫред

рдпреЛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдЬрдЯрд┐рд▓рддрд╛ рдпреБрдирд┐рдХреНрд╕ рд╢реЗрд▓рдХреЛ рд▓рд╛рдЧрд┐ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рд╕рд╛рдорд╛рдиреНрдп рдЫ, рд░ рддреНрдпреЛ рд╢реЗрд▓рд▓рд╛рдИ рдХрд▓ рдЧрд░реЗрдкрдЫрд┐ рдХреЛрдб рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдХрд╛рдБрдЯрд╛(), рддрд░ рдХрд▓ рдЕрдШрд┐ exec()ред рдпрд╕реНрддреЛ рдХреЛрдбрдХреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдгрд▓реЗ рдпрд╕рд▓рд╛рдИ рд╕реБрд░реБ рдЧрд░реНрдиреБ рдЕрдШрд┐, рдХрд╛рд░реНрдпрдХреНрд░рдордХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрдиреБрд╕рд╛рд░ рд╢реЗрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рд╕рдорд╛рдпреЛрдЬрди рдЧрд░реНрджреИрдЫред

рдЦреЛрд▓ - рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдоред рдЙрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдирд┐рдордиреНрддреНрд░рдгрд╛ рд▓рд╛рдЗрди рджреЗрдЦрд╛рдЙрдБрдЫ рд░ рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рдорд╛ рдХреЗрд╣рд┐ рд▓реЗрдЦреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрдиреБрд╣реБрдиреНрдЫред рдзреЗрд░реИ рдЬрд╕реЛ рдХреЗрд╕рд╣рд░реВрдорд╛, рдпрджрд┐ рддрдкрд╛рдЗрдБ рддреНрдпрд╣рд╛рдБ рдкреНрд░реЛрдЧреНрд░рд╛рдордХреЛ рдирд╛рдо рд▓реЗрдЦреНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рд╢реЗрд▓рд▓реЗ рдпрд╕рдХреЛ рд╕реНрдерд╛рди рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреЗрдЫ, рдлреЛрд░реНрдХ() рд╡рд┐рдзрд┐рд▓рд╛рдИ рдХрд▓ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд░ рддреНрдпрд╕рдкрдЫрд┐ рдирдпрд╛рдБ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдХреЗрд╣рд┐ рдкреНрд░рдХрд╛рд░рдХреЛ exec() рд▓рд╛рдИ рдХрд▓ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдпрд╕рд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкреВрд░рд╛ рд╣реБрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрдиреБрд╣реЛрд╕реНред рдкреНрд░рддреАрдХреНрд╖рд╛ () рдХрд▓ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдЬрдм рдЪрд╛рдЗрд▓реНрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрд╛рд╣рд┐рд░ рдирд┐рд╕реНрдХрдиреНрдЫ, рд╢реЗрд▓ рдкреНрд░рддреАрдХреНрд╖рд╛() рдХрд▓рдмрд╛рдЯ рдлрд░реНрдХрд┐рдиреЗрдЫ рд░ рдкреБрди: рдкреНрд░рдореНрдкреНрдЯ рдкреНрд░рд┐рдиреНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдЕрд░реНрдХреЛ рдЖрджреЗрд╢ рдкреНрд░рд╡рд┐рд╖реНрдЯ рдЧрд░реНрди рдкрд░реНрдЦрдиреБрд╣реЛрд╕реНред

рдлреЛрд░реНрдХ() рд░ exec() рд╡рд┐рднрд╛рдЬрдирд▓реЗ рд╢реЗрд▓рд▓рд╛рдИ рдирд┐рдореНрди рдХреБрд░рд╛рд╣рд░реВ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐:
wc рдлрд╛рдЗрд▓> new_fileред

рдпрд╕ рдЙрджрд╛рд╣рд░рдгрдорд╛, wc рдХрд╛рд░реНрдпрдХреНрд░рдордХреЛ рдЖрдЙрдЯрдкреБрдЯ рдлрд╛рдЗрд▓рдорд╛ рд░рд┐рдбрд┐рд░реЗрдХреНрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫред рд╢реЗрд▓рд▓реЗ рдпреЛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗ рддрд░рд┐рдХрд╛ рдПрдХрджрдо рд╕рд░рд▓ рдЫ - рдХрд▓ рдЧрд░реНрдиреБ рдЕрдШрд┐ рдмрдЪреНрдЪрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реЗрд░ exec(), рд╢реЗрд▓рд▓реЗ рдорд╛рдирдХ рдЖрдЙрдЯрдкреБрдЯ рдмрдиреНрдж рдЧрд░реНрдЫ рд░ рдлрд╛рдЗрд▓ рдЦреЛрд▓реНрдЫ рдирдпрд╛рдБ_рдлрд╛рдЗрд▓, рдпрд╕рд░реА, рдердк рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдХрд╛рд░реНрдпрдХреНрд░рдордмрд╛рдЯ рд╕рдмреИ рдЖрдЙрдЯрдкреБрдЯ wc рд╕реНрдХреНрд░рд┐рдирдХреЛ рд╕рдЯреНрдЯрд╛ рдлрд╛рдЗрд▓рдорд╛ рд░рд┐рдбрд┐рд░реЗрдХреНрдЯ рдЧрд░рд┐рдиреЗрдЫред

рдпреБрдирд┐рдХреНрд╕ рдкрд╛рдЗрдк рд╕рдорд╛рди рд░реВрдкрдорд╛ рд▓рд╛рдЧреВ рдЧрд░рд┐рдиреНрдЫ, рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдкрд╛рдЗрдк() рдХрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рднрд┐рдиреНрдирддрд╛рд╕рдБрдЧред рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдо рдХрд░реНрдиреЗрд▓рдорд╛ рдЕрд╡рд╕реНрдерд┐рдд рдкрд╛рдЗрдк рд▓рд╛рдЗрдирдорд╛ рдЬрдбрд╛рди рд╣реБрдиреЗрдЫ, рдЬрд╕рдорд╛ рдЕрд░реНрдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдо рдЬрдбрд╛рди рд╣реБрдиреЗрдЫред

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

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