рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд╕рд╛рде рд▓рд┐рдирдХреНрд╕рдорд╛ рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛

рдПрдХ рдкрдЯрдХ, рдПрдХ рдЕрдиреНрддрд░реНрд╡рд╛рд░реНрддрд╛рдХреЛ рдХреНрд░рдордорд╛, рдорд▓рд╛рдИ рд╕реЛрдзрд┐рдПрдХреЛ рдерд┐рдпреЛ, рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рдбрд┐рд╕реНрдХрдХреЛ рдард╛рдЙрдБ рд╕рдХрд┐рдПрдХреЛ рддрдереНрдпрдХрд╛ рдХрд╛рд░рдг рд╕реЗрд╡рд╛рд▓реЗ рдХрд╛рдо рдирдЧрд░реЗрдХреЛ рдкрд╛рдЗрдпреЛ рднрдиреЗ рдХреЗ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ?

рдирд┐рд╕реНрд╕рдиреНрджреЗрд╣, рдореИрд▓реЗ рдЬрд╡рд╛рдл рджрд┐рдПрдБ рдХрд┐ рдо рдпреЛ рдард╛рдЙрдБрд▓реЗ рдХреЗ рдУрдЧрдЯреЗрдХреЛ рдЫ рднрдиреЗрд░ рд╣реЗрд░реНрдиреЗрдЫреБ рд░ рд╕рдореНрднрд╡ рднрдПрдорд╛, рдо рдард╛рдЙрдБ рд╕рдлрд╛ рдЧрд░реНрдиреЗрдЫреБред
рддреНрдпрд╕рдкрдЫрд┐ рдЕрдиреНрддрд░реНрд╡рд╛рд░реНрддрд╛рдХрд╛рд░рд▓реЗ рд╕реЛрдзреЗ, рдпрджрд┐ рд╡рд┐рднрд╛рдЬрдирдорд╛ рдЦрд╛рд▓реА рдард╛рдЙрдБ рдЫреИрди, рддрд░ рддрдкрд╛рдИрдВрд▓реЗ рд╕рдмреИ рдард╛рдЙрдБ рдУрдЧрдЯреНрдиреЗ рдХреБрдиреИ рдлрд╛рдЗрд▓рд╣рд░реВ рдкрдирд┐ рджреЗрдЦреНрдиреБрднрдПрди рднрдиреЗ рдХреЗ рд╣реБрдиреНрдЫ?

рдпрд╕рдорд╛ рдореИрд▓реЗ рднрдиреЗрдВ рдХрд┐ рддрдкрд╛рдИрд▓реЗ рдЬрд╣рд┐рд▓реЗ рдкрдирд┐ рдЦреБрд▓рд╛ рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛рд╣рд░реВ рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ lsof рдЖрджреЗрд╢рдХреЛ рд╕рд╛рде, рд░ рдХреБрди рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рд╕рдмреИ рдЙрдкрд▓рдмреНрдз рдард╛рдЙрдБрд╣рд░реВ рдУрдЧрдЯреЗрдХреЛ рдЫ рднрдиреЗрд░ рдмреБрдЭреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рд░ рддреНрдпрд╕рдкрдЫрд┐ рддрдкрд╛рдИрд▓реЗ рдкрд░рд┐рд╕реНрдерд┐рддрд┐ рдЕрдиреБрд╕рд╛рд░ рдХрд╛рд░реНрдп рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдбрд╛рдЯрд╛ рдЖрд╡рд╢реНрдпрдХ рдЫ рдХрд┐ рдЫреИрди рднрдиреНрдиреЗ рдЖрдзрд╛рд░рдорд╛ред ред

рдЕрдиреНрддрд░реНрд╡рд╛рд░реНрддрд╛рдХрд╛рд░рд▓реЗ рдорд▓рд╛рдИ рдЕрдиреНрддрд┐рдо рд╢рдмреНрджрдорд╛ рдмрд╛рдзрд╛ рдкреБрд░реНтАНрдпрд╛рдпреЛ, рдЙрд╕рдХреЛ рдкреНрд░рд╢реНрдирдорд╛ рдердкреНрджреИ: "рдорд╛рдиреМрдВ рд╣рд╛рдореАрд▓рд╛рдИ рдбрд╛рдЯрд╛ рдЪрд╛рд╣рд┐рдБрджреИрди, рдпреЛ рдХреЗрд╡рд▓ рдПрдХ рдбрд┐рдмрдЧ рд▓рдЧ рд╣реЛ, рддрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рдХрд╛рдо рдЧрд░реНрджреИрди рдХрд┐рдирдХрд┐ рдпрд╕рд▓реЗ рдбрд┐рдмрдЧ рд▓реЗрдЦреНрди рд╕рдХреНрджреИрди"?

"рдареАрдХ рдЫ," рдореИрд▓реЗ рдЬрд╡рд╛рдл рджрд┐рдПрдБ, "рд╣рд╛рдореА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ рдбрд┐рдмрдЧ рдмрдиреНрдж рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ рд░ рдпрд╕рд▓рд╛рдИ рдкреБрди: рд╕реБрд░реБ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред"
рдЕрдиреНрддрд░реНрд╡рд╛рд░реНрддрд╛рдХрд░реНрддрд╛рд▓реЗ рдЖрдкрддреНрддрд┐ рдЬрдирд╛рдП: "рд╣реЛрдЗрди, рд╣рд╛рдореА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреБрди: рд╕реБрд░реБ рдЧрд░реНрди рд╕рдХреНрджреИрдиреМрдВ, рд╣рд╛рдореАрд╕рдБрдЧ рдЕрдЭреИ рдкрдирд┐ рдореЗрдореЛрд░реАрдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдПрдХреЛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдбреЗрдЯрд╛ рдЫ, рд░ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЧреНрд░рд╛рд╣рдХрд╣рд░реВ рд╕реЗрд╡рд╛рдорд╛ рдЬрдбрд╛рди рднрдПрдХрд╛ рдЫрдиреН, рдЬрд╕рд▓рд╛рдИ рд╣рд╛рдореА рдкреБрди: рдЬрдбрд╛рди рдЧрд░реНрди рдмрд╛рдзреНрдп рдкрд╛рд░реНрди рд╕рдХреНрджреИрдиреМрдВред"

"рдареАрдХ рдЫ," рдореИрд▓реЗ рднрдиреЗрдВ, "рдпрджрд┐ рд╣рд╛рдореА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреБрди: рд╕реБрд░реБ рдЧрд░реНрди рд╕рдХреНрджреИрдиреМрдВ рд░ рдбрд╛рдЯрд╛ рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫреИрди рднрдиреЗ, рд╣рд╛рдореА рдХреЗрд╡рд▓ рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛ рдорд╛рд░реНрдлрдд рдпреЛ рдЦреБрд▓рд╛ рдлрд╛рдЗрд▓ рдЦрд╛рд▓реА рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ, рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ ls рдЖрджреЗрд╢рдорд╛ рдирджреЗрдЦреЗ рддрд╛рдкрдирд┐ред рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реАрдорд╛ред"

рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░рдХрд░реНрддрд╛ рдЦреБрд╕реА рдерд┐рдП, рддрд░ рдо рдерд┐рдПрдиред

рддреНрдпрд╕рдкрдЫрд┐ рдореИрд▓реЗ рд╕реЛрдЪреЗ, рдореЗрд░реЛ рдЬреНрдЮрд╛рдирдХреЛ рдкрд░рд┐рдХреНрд╖рдг рдЧрд░реНрдиреЗ рд╡реНрдпрдХреНрддрд┐рд▓реЗ рдХрд┐рди рдЧрд╣рд┐рд░реЛ рдЦрдиреНрджреИрди? рддрд░ рдХреЗ рд╣реБрдиреНрдЫ рдпрджрд┐ рдбрд╛рдЯрд╛ рд╕рдмреИ рдкрдЫрд┐ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ? рдХреЗ рд╣реБрдиреНрдЫ рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреБрди: рд╕реБрд░реБ рдЧрд░реНрди рд╕рдХреНрджреИрдиреМрдВ, рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓реЗ рдХреБрдиреИ рдЦрд╛рд▓реА рдард╛рдЙрдБ рдирднрдПрдХреЛ рд╡рд┐рднрд╛рдЬрдирдорд╛ рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реАрдорд╛ рд▓реЗрдЦреНрдЫ? рдХреЗ рд╣реБрдиреНрдЫ рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рд▓реЗрдЦрд┐рдПрдХреЛ рдбрд╛рдЯрд╛ рдорд╛рддреНрд░ рдЧреБрдорд╛рдЙрди рд╕рдХреНрджреИрдиреМрдВ, рддрд░ рдпреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓реЗ рд▓реЗрдЦреНрдиреЗ рд╡рд╛ рд▓реЗрдЦреНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреЗ рдбрд╛рдЯрд╛ рдкрдирд┐?

рддреБрдЬрд┐рдХ

рдореЗрд░реЛ рдХреНрдпрд╛рд░рд┐рдпрд░рдХреЛ рд╕реБрд░реБрдорд╛, рдореИрд▓реЗ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдЬрд╛рдирдХрд╛рд░реА рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдиреЗ рдПрдЙрдЯрд╛ рд╕рд╛рдиреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реЗрдВред рд░ рддреНрдпрд╕рдкрдЫрд┐ рдореИрд▓реЗ рд╕реЛрдЪреЗ, рдо рдХрд╕рд░реА рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓рд╛рдИ рдЙрд╕рдХреЛ рдбрд╛рдЯрд╛рд╕рдБрдЧ рдорд┐рд▓рд╛рдЙрди рд╕рдХреНрдЫреБред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдорд╕рдБрдЧ рдЗрд╡рд╛рдиреЛрдн рдЗрднрд╛рди рдЗрд╡рд╛рдиреЛрд╡рд┐рдЪ рдЫ, рд░ рдЙрд╣рд╛рдБрд╕рдБрдЧ рдХреЗрд╣реА рдЬрд╛рдирдХрд╛рд░реА рдЫ, рддрд░ рдо рдЙрдиреАрд╣рд░реВрд╕рдБрдЧ рдХрд╕рд░реА рд╕рд╛рдереА рдмрдирд╛рдЙрди рд╕рдХреНрдЫреБ? рдо рд╕рд┐рдзреИ рдмрддрд╛рдЙрди рд╕рдХреНрдЫреБ рдХрд┐ "Tuzik" рдирд╛рдордХреЛ рдХреБрдХреБрд░ рдпрд╣реА рдЗрд╡рд╛рдирдХреЛ рд╣реЛред рддрд░ рдХреЗ рдпрджрд┐ рдЙрд╕рд▓реЗ рдЖрдлреНрдиреЛ рдирд╛рдо рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдЫ рд░ рдЗрд╡рд╛рдирдХреЛ рд╕рдЯреНрдЯрд╛, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдУрд▓реНрдпрд╛ рд╣реБрдиреНрдЫ? рддреНрдпрд╕реЛрднрдП рдпреЛ рдмрд╛рд╣рд┐рд░ рдЖрдЙрдиреЗрдЫ рдХрд┐ рд╣рд╛рдореНрд░реЛ рдУрд▓реНрдпрд╛ рдЗрд╡рд╛рдиреЛрднрдирд╛ рдЗрд╡рд╛рдиреЛрднрд╛рд╕рдБрдЧ рдЕрдм рдХреБрдХреБрд░ рдЫреИрди, рд░ рд╣рд╛рдореНрд░реЛ рдЯреБрдЬрд┐рдХ рдЕрдЭреИ рдкрдирд┐ рдЕрд╕реНрддрд┐рддреНрд╡рд╣реАрди рдЗрд╡рд╛рдирдХреЛ рд╣реБрдиреЗрдЫред рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд▓рд╛рдИ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛ (рдЖрдИрдбреА) рджрд┐рдиреЗ рдбрд╛рдЯрд╛рдмреЗрд╕рд▓реЗ рдпреЛ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНтАНрдпреЛ, рд░ рдореЗрд░реЛ Tuzik рдпрд╕ ID рдорд╛ рдмрд╛рдБрдзрд┐рдПрдХреЛ рдерд┐рдпреЛ, рдЬреБрди рд╡рд╛рд╕реНрддрд╡рдорд╛ рд╕рд┐рд░рд┐рдпрд▓ рдирдореНрдмрд░ рдорд╛рддреНрд░ рдерд┐рдпреЛред рдпрд╕рд░реА, рдРрд╕рдХреЛ рдорд╛рд▓рд┐рдХрд╕рдБрдЧ рдЖрдИрдбреА рдирдореНрдмрд░ 2 рдерд┐рдпреЛ, рд░ рдХреБрдиреИ рд╕рдордпрдорд╛ рдЗрд╡рд╛рди рдпреЛ рдЖрдИрдбреА рдЕрдиреНрддрд░реНрдЧрдд рдерд┐рдпреЛ, рд░ рддреНрдпрд╕рдкрдЫрд┐ рдУрд▓реНрдпрд╛ рдПрдЙрдЯреИ рдЖрдИрдбреА рдЕрдиреНрддрд░реНрдЧрдд рднрдпреЛред рдорд╛рдирд╡рддрд╛ рд░ рдкрд╢реБрдкрд╛рд▓рдирдХреЛ рд╕рдорд╕реНрдпрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдкрдорд╛ рд╣рд▓ рднрдпреЛред

рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛

рдпрд╕ рдлрд╛рдЗрд▓рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рдлрд╛рдЗрд▓ рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдордХреЛ рд╕рдорд╕реНрдпрд╛ рд▓рдЧрднрдЧ рд╣рд╛рдореНрд░реЛ рдХреБрдХреБрд░ рд░ рдорд╛рдирд┐рд╕рдХреЛ рдЬрд╕реНрддреИ рдЫред рдорд╛рдиреМрдВ рдореИрд▓реЗ ivan.txt рдирд╛рдордХ рдлрд╛рдЗрд▓ рдЦреЛрд▓реЗрдХреЛ рдЫреБ рд░ рдпрд╕рдорд╛ tuzik рд╢рдмреНрдж рд▓реЗрдЦреНрди рдерд╛рд▓реЗрдХреЛ рдЫреБ, рддрд░ рдлрд╛рдЗрд▓рдорд╛ рдкрд╣рд┐рд▓реЛ рдЕрдХреНрд╖рд░ "t" рдорд╛рддреНрд░ рд▓реЗрдЦреНрди рд╕рдлрд▓ рднрдПрдХреЛ рдЫреБ, рд░ рдпреЛ рдлрд╛рдЗрд▓рд▓рд╛рдИ рдХрд╕реИрд▓реЗ рдкреБрди: рдирд╛рдорд╛рдХрд░рдг рдЧрд░реЗрдХреЛ рдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, olya.txtред рддрд░ рдлрд╛рдЗрд▓ рдЙрд╕реНрддреИ рдЫ, рд░ рдо рдЕрдЭреИ рдкрдирд┐ рдпрд╕рдорд╛ рдореЗрд░реЛ рдЗрдХреНрдХрд╛ рд░реЗрдХрд░реНрдб рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреБред рдкреНрд░рддреНрдпреЗрдХ рдкрдЯрдХ рдкреНрд░рдгрд╛рд▓реА рдХрд▓ рджреНрд╡рд╛рд░рд╛ рдлрд╛рдЗрд▓ рдЦреЛрд▓рд┐рдПрдХреЛ рдЫ рдЦреБрд▓рд╛ рдХреБрдиреИ рдкрдирд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рднрд╛рд╖рд╛рдорд╛ рдореИрд▓реЗ рдПрдЙрдЯрд╛ рдЕрджреНрд╡рд┐рддреАрдп ID рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдЫреБ рдЬрд╕рд▓реЗ рдорд▓рд╛рдИ рдлрд╛рдЗрд▓рдорд╛ рджреЗрдЦрд╛рдЙрдБрдЫ, рдпреЛ ID рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛ рд╣реЛред рд░ рдпреЛ рдХреБрдиреИ рдлрд░рдХ рдкрд░реНрджреИрди рдХрд┐ рдпреЛ рдлрд╛рдЗрд▓рдХреЛ рд╕рд╛рде рдХреЗ рд░ рдХрд╕рд▓реЗ рдЧрд░реНрдЫ, рдпрд╕рд▓рд╛рдИ рдореЗрдЯрд╛рдЙрди рд╕рдХрд┐рдиреНрдЫ, рдпрд╕рд▓рд╛рдИ рдкреБрди: рдирд╛рдорд╛рдХрд░рдг рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рдорд╛рд▓рд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рд╡рд╛ рдкрдвреНрди рд░ рд▓реЗрдЦреНрдиреЗ рдЕрдзрд┐рдХрд╛рд░ рдЦреЛрд╕реНрди рд╕рдХрд┐рдиреНрдЫ, рдорд╕рдБрдЧ рдЕрдЭреИ рдкрд╣реБрдБрдЪ рд╣реБрдиреЗрдЫред рдпрд╕рдорд╛, рдХрд┐рдирднрдиреЗ рдлрд╛рдЗрд▓ рдЦреЛрд▓реНрдиреЗ рд╕рдордпрдорд╛, рдорд╕рдБрдЧ рдкрдвреНрди рд░/рд╡рд╛ рд▓реЗрдЦреНрдиреЗ рдЕрдзрд┐рдХрд╛рд░ рдерд┐рдпреЛ рд░ рдореИрд▓реЗ рдпрд╕рд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрди рд╕реБрд░реБ рдЧрд░реЗрдВ, рдЬрд╕рдХреЛ рдорддрд▓рдм рдореИрд▓реЗ рддреНрдпрд╕реЛ рдЧрд░рд┐рд░рд╣рдиреБрдкрд░реНрдЫред

рд▓рд┐рдирдХреНрд╕рдорд╛, libc рдкреБрд╕реНрддрдХрд╛рд▓рдпрд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ (рдкреНрд░рдХреНрд░рд┐рдпрд╛) рдХреЛ рд▓рд╛рдЧрд┐ 3 рдирдореНрдмрд░рдорд╛ 0,1,2 рд╡рд░реНрдгрдирдХрд░реНрддрд╛ рдлрд╛рдЗрд▓рд╣рд░реВ рдЦреЛрд▓реНрдЫред рдердк рдЬрд╛рдирдХрд╛рд░реА рд▓рд┐рдЩреНрдХрд╣рд░реВрдорд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рдиреНрдЫ рдорд╛рдиреНрдЫреЗ stdio ╨╕ рдорд╛рдиреНрдЫреЗ stdout

  • рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛ реж рд▓рд╛рдИ STDIN рднрдирд┐рдиреНрдЫ рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЗрдирдкреБрдЯрд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫ
  • рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛ 1 рд▓рд╛рдИ STDOUT рднрдирд┐рдиреНрдЫ рд░ рдкреНрд░рд┐рдиреНрдЯ рдЖрджреЗрд╢рд╣рд░реВ рдЬрд╕реНрддрд╛ рдбреЗрдЯрд╛ рдЖрдЙрдЯрдкреБрдЯ рдЧрд░реНрди рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрджреНрд╡рд╛рд░рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред
  • рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛ 2 рд▓рд╛рдИ STDERR рднрдирд┐рдиреНрдЫ рд░ рддреНрд░реБрдЯрд┐ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдЖрдЙрдЯрдкреБрдЯ рдЧрд░реНрди рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрджреНрд╡рд╛рд░рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред

рдпрджрд┐ рддрдкрд╛рдЗрдБрдХреЛ рдХрд╛рд░реНрдпрдХреНрд░рдордорд╛ рддрдкрд╛рдЗрдБ рдкрдвреНрди рд╡рд╛ рд▓реЗрдЦреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдХреБрдиреИ рдкрдирд┐ рдлрд╛рдЗрд▓ рдЦреЛрд▓реНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рд╕рдореНрднрд╡рддрдГ рддрдкрд╛рдЗрдБ рдкрд╣рд┐рд▓реЛ рдирд┐: рд╢реБрд▓реНрдХ рдЖрдИрдбреА рдкрд╛рдЙрдиреБрд╣реБрдиреЗрдЫ рд░ рдпреЛ рдирдореНрдмрд░ 3 рд╣реБрдиреЗрдЫред

рдпрджрд┐ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдпрд╕рдХреЛ PID рдерд╛рд╣рд╛ рдЫ рднрдиреЗ рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рд╕реВрдЪреА рдХреБрдиреИ рдкрдирд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рд▓рд╛рдЧрд┐ рд╣реЗрд░реНрди рд╕рдХрд┐рдиреНрдЫред

рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдмреНрдпрд╛рд╕ рдХрдиреНрд╕реЛрд▓ рдЦреЛрд▓реМрдВ рд░ рд╣рд╛рдореНрд░реЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ PID рд╣реЗрд░реМрдВ

[user@localhost ]$ echo $$
15771

рджреЛрд╕реНрд░реЛ рдХрдиреНрд╕реЛрд▓рдорд╛ рдЪрд▓реМрдВ

[user@localhost ]$ ls -lah /proc/15771/fd/
total 0
dr-x------ 2 user user  0 Oct  7 15:42 .
dr-xr-xr-x 9 user user  0 Oct  7 15:42 ..
lrwx------ 1 user user 64 Oct  7 15:42 0 -> /dev/pts/21
lrwx------ 1 user user 64 Oct  7 15:42 1 -> /dev/pts/21
lrwx------ 1 user user 64 Oct  7 15:42 2 -> /dev/pts/21
lrwx------ 1 user user 64 Oct  7 15:42 255 -> /dev/pts/21

рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕ рд▓реЗрдЦрдХреЛ рдЙрджреНрджреЗрд╢реНрдпрдХрд╛ рд▓рд╛рдЧрд┐ рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛ рдирдореНрдмрд░ 255 рд▓рд╛рдИ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдкрдорд╛ рдмреЗрд╡рд╛рд╕реНрддрд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ; рдпреЛ рдпрд╕рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ bash рджреНрд╡рд╛рд░рд╛ рдЦреЛрд▓рд┐рдПрдХреЛ рдерд┐рдпреЛ, рд░ рд▓рд┐рдЩреНрдХ рдЧрд░рд┐рдПрдХреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдпрджреНрд╡рд╛рд░рд╛ рд╣реЛрдЗрдиред

рдЕрдм рд╕рдмреИ 3 рд╡рд░реНрдгрдирдХрд░реНрддрд╛ рдлрд╛рдЗрд▓рд╣рд░реВ рд╕реНрдпреВрдбреЛ рдЯрд░реНрдорд┐рдирд▓ рдЙрдкрдХрд░рдгрд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫрдиреН /dev/pts, рддрд░ рд╣рд╛рдореА рдЕрдЭреИ рдкрдирд┐ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╣реЗрд░рдлреЗрд░ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рджреЛрд╕реНрд░реЛ рдХрдиреНрд╕реЛрд▓рдорд╛ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН

[user@localhost ]$ echo "hello world" > /proc/15771/fd/0

рд░ рдкрд╣рд┐рд▓реЛ рдХрдиреНрд╕реЛрд▓рдорд╛ рд╣рд╛рдореА рджреЗрдЦреНрдиреЗрдЫреМрдВ

[user@localhost ]$ hello world

рд░рд┐рдбрд┐рд░реЗрдХреНрдЯ рд░ рдкрд╛рдЗрдк

рддрдкрд╛рдИрдВ рд╕рдЬрд┐рд▓реИрд╕рдБрдЧ рдпреА 3 рд╡рд░реНрдгрдирдХрд░реНрддрд╛ рдлрд╛рдЗрд▓рд╣рд░реВрд▓рд╛рдИ рдХреБрдиреИ рдкрдирд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рдУрднрд░рд░рд╛рдЗрдб рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, bash рд╕рд╣рд┐рдд, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ рджреБрдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдЬрдбрд╛рди рдЧрд░реНрдиреЗ рдкрд╛рдЗрдк рдорд╛рд░реНрдлрдд, рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН

[user@localhost ]$ cat /dev/zero | sleep 10000

рддрдкрд╛рдИрдВ рдЖрдлреИрд▓реЗ рдпреЛ рдЖрджреЗрд╢ рдЪрд▓рд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ strace -f рд░ рднрд┐рддреНрд░ рдХреЗ рднрдЗрд░рд╣реЗрдХреЛ рдЫ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН, рддрд░ рдо рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЫреЛрдЯрдХрд░реАрдорд╛ рдмрддрд╛рдЙрдиреЗрдЫреБред

PID 15771 рдХреЛ рд╕рд╛рде рд╣рд╛рдореНрд░реЛ рдЕрднрд┐рднрд╛рд╡рдХ bash рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓реЗ рд╣рд╛рдореНрд░реЛ рдЖрджреЗрд╢ рдкрд╛рд░реНрд╕ рдЧрд░реНрджрдЫ рд░ рд╣рд╛рдореА рдХрддрд┐ рдХрдорд╛рдгреНрдбрд╣рд░реВ рдЪрд▓рд╛рдЙрди рдЪрд╛рд╣рдиреНрдЫреМрдВ рднрдиреНрдиреЗ рдХреБрд░рд╛ рдмреБрдЭреНрдЫ, рд╣рд╛рдореНрд░реЛ рдХреЗрд╕рдорд╛ рддреАрдордзреНрдпреЗ рджреБрдИрд╡рдЯрд╛ рдЫрдиреН: рдмрд┐рд░рд╛рд▓реЛ рд░ рдирд┐рджреНрд░рд╛ред Bash рд▓рд╛рдИ рдерд╛рд╣рд╛ рдЫ рдХрд┐ рдпрд╕рд▓реЗ рджреБрдИ рдмрдЪреНрдЪрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдПрдЙрдЯрд╛ рдкрд╛рдЗрдкрдорд╛ рдорд░реНрдЬ рдЧрд░реНрдиреБрдкрд░реНрдЫред рдХреБрд▓рдорд╛, bash рд▓рд╛рдИ реи рдЪрд╛рдЗрд▓реНрдб рдкреНрд░реЛрд╕реЗрд╕ рд░ рдПрдЙрдЯрд╛ рдкрд╛рдЗрдк рдЪрд╛рд╣рд┐рдиреНрдЫред

Bash рд▓реЗ рдмрд╛рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБ рдЕрдШрд┐ рдкреНрд░рдгрд╛рд▓реА рдХрд▓ рдЪрд▓рд╛рдЙрдБрдЫ рдкрд╛рдЗрдк рд░ рдЕрд╕реНрдерд╛рдпреА рдкрд╛рдЗрдк рдмрдлрд░рдорд╛ рдирдпрд╛рдБ рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛рд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрджрдЫ, рддрд░ рдпреЛ рдмрдлрд░рд▓реЗ рд╣рд╛рдореНрд░реЛ рджреБрдИ рдмрдЪреНрдЪрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдЬрдбрд╛рди рдЧрд░реНрджреИрдиред

рдЕрднрд┐рднрд╛рд╡рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рд▓рд╛рдЧрд┐, рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ рдХрд┐ рддреНрдпрд╣рд╛рдБ рдкрд╣рд┐рд▓реЗ рдиреИ рдкрд╛рдЗрдк рдЫ, рддрд░ рддреНрдпрд╣рд╛рдБ рдЕрдЭреИ рдХреБрдиреИ рдмрд╛рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдЫреИрдирдиреН:

PID    command
15771  bash
lrwx------ 1 user user 64 Oct  7 15:42 0 -> /dev/pts/21
lrwx------ 1 user user 64 Oct  7 15:42 1 -> /dev/pts/21
lrwx------ 1 user user 64 Oct  7 15:42 2 -> /dev/pts/21
lrwx------ 1 user user 64 Oct  7 15:42 3 -> pipe:[253543032]
lrwx------ 1 user user 64 Oct  7 15:42 4 -> pipe:[253543032]
lrwx------ 1 user user 64 Oct  7 15:42 255 -> /dev/pts/21

рддреНрдпрд╕рдкрдЫрд┐ рдкреНрд░рдгрд╛рд▓реА рдХрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХреНрд▓реЛрди bash рд▓реЗ рджреБрдИ рдмрдЪреНрдЪрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрдЫ, рд░ рд╣рд╛рдореНрд░рд╛ рддреАрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреЗрдЫрдиреН:

PID    command
15771  bash
lrwx------ 1 user user 64 Oct  7 15:42 0 -> /dev/pts/21
lrwx------ 1 user user 64 Oct  7 15:42 1 -> /dev/pts/21
lrwx------ 1 user user 64 Oct  7 15:42 2 -> /dev/pts/21
lrwx------ 1 user user 64 Oct  7 15:42 3 -> pipe:[253543032]
lrwx------ 1 user user 64 Oct  7 15:42 4 -> pipe:[253543032]
lrwx------ 1 user user 64 Oct  7 15:42 255 -> /dev/pts/21
PID    command
9004  bash
lrwx------ 1 user user 64 Oct  7 15:57 0 -> /dev/pts/21
lrwx------ 1 user user 64 Oct  7 15:57 1 -> /dev/pts/21
lrwx------ 1 user user 64 Oct  7 15:57 2 -> /dev/pts/21
lrwx------ 1 user user 64 Oct  7 15:57 3 -> pipe:[253543032]
lrwx------ 1 user user 64 Oct  7 15:57 4 -> pipe:[253543032]
lrwx------ 1 user user 64 Oct  7 15:57 255 -> /dev/pts/21
PID    command
9005  bash
lrwx------ 1 user user 64 Oct  7 15:57 0 -> /dev/pts/21
lrwx------ 1 user user 64 Oct  7 15:57 1 -> /dev/pts/21
lrwx------ 1 user user 64 Oct  7 15:57 2 -> /dev/pts/21
lrwx------ 1 user user 64 Oct  7 15:57 3 -> pipe:[253543032]
lrwx------ 1 user user 64 Oct  7 15:57 4 -> pipe:[253543032]
lrwx------ 1 user user 64 Oct  7 15:57 255 -> /dev/pts/21

рдирдмрд┐рд░реНрд╕рдиреБрд╣реЛрд╕реН рдХрд┐ рдХреНрд▓реЛрдирд▓реЗ рд╕рдмреИ рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛рд╣рд░реВрд╕рдБрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рдХреНрд▓реЛрди рдЧрд░реНрджрдЫ, рддреНрдпрд╕реИрд▓реЗ рддрд┐рдиреАрд╣рд░реВ рдЕрднрд┐рднрд╛рд╡рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд░ рдмрдЪреНрдЪрд╛рд╣рд░реВрдорд╛ рд╕рдорд╛рди рд╣реБрдиреЗрдЫрдиреНред PID 15771 рдХреЛ рд╕рд╛рде рдЕрднрд┐рднрд╛рд╡рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рдХрд╛рдо рдмрдЪреНрдЪрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрдХреЛ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░реНрдиреБ рд╣реЛ, рддреНрдпрд╕реИрд▓реЗ рдпрд╕рд▓реЗ рдмрдЪреНрдЪрд╛рд╣рд░реВрдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рддреНрд░ рдкрд░реНрдЦрдиреНрдЫред

рддреНрдпрд╕рдХрд╛рд░рдг, рдпрд╕рд▓рд╛рдИ рдкрд╛рдЗрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд░реНрджреИрди, рд░ рдпрд╕рд▓реЗ 3 рд░ 4 рдирдореНрдмрд░ рднрдПрдХрд╛ рдлрд╛рдЗрд▓ рд╡рд┐рд╡рд░рдгрд╣рд░реВ рдмрдиреНрдж рдЧрд░реНрджрдЫред

PID 9004 рд╕рдБрдЧ рдкрд╣рд┐рд▓реЛ рдЪрд╛рдЗрд▓реНрдб рдмреНрдпрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛, рдкреНрд░рдгрд╛рд▓реА рдХрд▓ dup2, рд╣рд╛рдореНрд░реЛ STDOUT рдлрд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдирдореНрдмрд░ 1 рд▓рд╛рдИ рдкрд╛рдЗрдкрд▓рд╛рдИ рдкреЛрдЗрдиреНрдЯ рдЧрд░реНрдиреЗ рдлрд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░рдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрджрдЫ, рд╣рд╛рдореНрд░реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛ рдпреЛ рдирдореНрдмрд░ 3 рд╣реЛред рдпрд╕рд░реА, PID 9004 рд╕рдБрдЧ рдкрд╣рд┐рд▓реЛ рдЪрд╛рдЗрд▓реНрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓реЗ STDOUT рдорд╛ рд▓реЗрдЦреНрдиреЗ рд╕рдмреИ рдХреБрд░рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдкрд╛рдЗрдк рдмрдлрд░рдорд╛ рд╕рдорд╛рдкреНрдд рд╣реБрдиреЗрдЫред

PID 9005 рд╕рдБрдЧ рджреЛрд╕реНрд░реЛ рдЪрд╛рдЗрд▓реНрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛, bash рд▓реЗ рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛ STDIN рдирдореНрдмрд░ 2 рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди dup0 рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред рдЕрдм PID 9005 рд╕рдБрдЧ рд╣рд╛рдореНрд░реЛ рджреЛрд╕реНрд░реЛ рдмреНрдпрд╛рд╕рд▓реЗ рдкрдвреНрдиреЗ рд╕рдмреИ рдХреБрд░рд╛ рдкрд╛рдЗрдкрдмрд╛рдЯ рдкрдврд┐рдиреЗрдЫред

рдпрд╕ рдкрдЫрд┐, 3 рд░ 4 рдирдореНрдмрд░ рднрдПрдХрд╛ рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛рд╣рд░реВ рдкрдирд┐ рдЪрд╛рдЗрд▓реНрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрдорд╛ рдмрдиреНрдж рдЫрдиреН, рдХрд┐рдирднрдиреЗ рддрд┐рдиреАрд╣рд░реВ рдЕрдм рдкреНрд░рдпреЛрдЧ рд╣реБрдБрджреИрдирдиреНред

рдореИрд▓реЗ рдЬрд╛рдирд╛рдЬрд╛рдиреА рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛ 255 рд▓рд╛рдИ рдмреЗрд╡рд╛рд╕реНрддрд╛ рдЧрд░реНрдЫреБ; рдпреЛ bash рджреНрд╡рд╛рд░рд╛ рдЖрдиреНрддрд░рд┐рдХ рдЙрджреНрджреЗрд╢реНрдпрдХрд╛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ рд░ рдмрд╛рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрдорд╛ рдкрдирд┐ рдмрдиреНрдж рд╣реБрдиреЗрдЫред

рдЕрд░реНрдХреЛ, PID 9004 рд╕рдБрдЧ рдкрд╣рд┐рд▓реЛ рдЪрд╛рдЗрд▓реНрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛, bash рд▓реЗ рдкреНрд░рдгрд╛рд▓реА рдХрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдерд╛рд▓реНрдЫ exec рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдпреЛрдЧреНрдп рдлрд╛рдЗрд▓ рдЬреБрди рд╣рд╛рдореАрд▓реЗ рдХрдорд╛рдгреНрдб рд▓рд╛рдЗрдирдорд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реЗрдХрд╛ рдЫреМрдВ, рд╣рд╛рдореНрд░реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛ рдпреЛ /usr/bin/cat рд╣реЛред

PID 9005 рд╕рдБрдЧ рджреЛрд╕реНрд░реЛ рдЪрд╛рдЗрд▓реНрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛, bash рд▓реЗ рд╣рд╛рдореАрд▓реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реЗрдХреЛ рджреЛрд╕реНрд░реЛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЪрд▓рд╛рдЙрдБрдЫ, рд╣рд╛рдореНрд░реЛ рдХреЗрд╕рдорд╛ /usr/bin/sleepред

exec рдкреНрд░рдгрд╛рд▓реА рдХрд▓рд▓реЗ рдлрд╛рдЗрд▓ рд╣реНрдпрд╛рдиреНрдбрд▓рд╣рд░реВ рдмрдиреНрдж рдЧрд░реНрджреИрди рдЬрдмрд╕рдореНрдо рддрд┐рдиреАрд╣рд░реВ O_CLOEXEC рдлреНрд▓реНрдпрд╛рдЧрд╕рдБрдЧ рдЦреБрд▓рд╛ рдХрд▓ рдЧрд░рд┐рдПрдХреЛ рд╕рдордпрдорд╛ рдЦреЛрд▓рд┐рдПрдХреЛ рдерд┐рдПрдиред рд╣рд╛рдореНрд░реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдпреЛрдЧреНрдп рдлрд╛рдЗрд▓рд╣рд░реВ рд╕реБрд░реВ рдЧрд░реЗрдкрдЫрд┐, рд╕рдмреИ рд╣рд╛рд▓рдХреЛ рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛рд╣рд░реВ рдмрдЪрдд рд╣реБрдиреЗрдЫрдиреНред

рдХрдиреНрд╕реЛрд▓рдорд╛ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

[user@localhost ]$ pgrep -P 15771
9004
9005
[user@localhost ]$ ls -lah /proc/15771/fd/
total 0
dr-x------ 2 user user  0 Oct  7 15:42 .
dr-xr-xr-x 9 user user  0 Oct  7 15:42 ..
lrwx------ 1 user user 64 Oct  7 15:42 0 -> /dev/pts/21
lrwx------ 1 user user 64 Oct  7 15:42 1 -> /dev/pts/21
lrwx------ 1 user user 64 Oct  7 15:42 2 -> /dev/pts/21
lrwx------ 1 user user 64 Oct  7 15:42 255 -> /dev/pts/21
[user@localhost ]$ ls -lah /proc/9004/fd
total 0
dr-x------ 2 user user  0 Oct  7 15:57 .
dr-xr-xr-x 9 user user  0 Oct  7 15:57 ..
lrwx------ 1 user user 64 Oct  7 15:57 0 -> /dev/pts/21
l-wx------ 1 user user 64 Oct  7 15:57 1 -> pipe:[253543032]
lrwx------ 1 user user 64 Oct  7 15:57 2 -> /dev/pts/21
lr-x------ 1 user user 64 Oct  7 15:57 3 -> /dev/zero
[user@localhost ]$ ls -lah /proc/9005/fd
total 0
dr-x------ 2 user user  0 Oct  7 15:57 .
dr-xr-xr-x 9 user user  0 Oct  7 15:57 ..
lr-x------ 1 user user 64 Oct  7 15:57 0 -> pipe:[253543032]
lrwx------ 1 user user 64 Oct  7 15:57 1 -> /dev/pts/21
lrwx------ 1 user user 64 Oct  7 15:57 2 -> /dev/pts/21
[user@localhost ]$ ps -up 9004
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
user  9004  0.0  0.0 107972   620 pts/21   S+   15:57   0:00 cat /dev/zero
[user@localhost ]$ ps -up 9005
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
user  9005  0.0  0.0 107952   360 pts/21   S+   15:57   0:00 sleep 10000

рддрдкрд╛рдИрд▓реЗ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рд╣рд╛рдореНрд░реЛ рдкрд╛рдЗрдкрдХреЛ рдЕрджреНрд╡рд┐рддреАрдп рд╕рдВрдЦреНрдпрд╛ рджреБрд╡реИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрдорд╛ рд╕рдорд╛рди рдЫред рдпрд╕рд░реА рд╣рд╛рдореАрд╕рдБрдЧ рдПрдЙрдЯреИ рдЕрднрд┐рднрд╛рд╡рдХрд╕рдБрдЧ рджреБрдИ рдлрд░рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдмреАрдЪрдХреЛ рд╕рдореНрдмрдиреНрдз рдЫред

рдмрд╛рд╢ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдкреНрд░рдгрд╛рд▓реА рдХрд▓рд╣рд░реВрд╕рдБрдЧ рдкрд░рд┐рдЪрд┐рдд рдирднрдПрдХрд╛рд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐, рдо рд╕реНрдЯреНрд░реЗрд╕ рдорд╛рд░реНрдлрдд рдЖрджреЗрд╢рд╣рд░реВ рдЪрд▓рд╛рдЙрди рд░ рдЖрдиреНрддрд░рд┐рдХ рд░реВрдкрдорд╛ рдХреЗ рднрдЗрд░рд╣реЗрдХреЛ рдЫ рднрдиреЗрд░ рд╣реЗрд░реНрди рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реНрджрдЫреБ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐:

strace -s 1024 -f bash -c "ls | grep hello"

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

[user@localhost ]$ cat openforwrite.py 
import datetime
import time

mystr="a"*1024*1024+"n"
with open("123.txt", "w") as f:
    while True:
        try:
            f.write(str(datetime.datetime.now()))
            f.write(mystr)
            f.flush()
            time.sleep(1)
        except:
            pass

рдХрд╛рд░реНрдпрдХреНрд░рдо рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН рд░ рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛рд╣рд░реВ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН

[user@localhost ]$ python openforwrite.py &
[1] 3762
[user@localhost ]$ ps axuf | grep [o]penforwrite
user  3762  0.0  0.0 128600  5744 pts/22   S+   16:28   0:00  |   _ python openforwrite.py
[user@localhost ]$ ls -la /proc/3762/fd
total 0
dr-x------ 2 user user  0 Oct  7 16:29 .
dr-xr-xr-x 9 user user  0 Oct  7 16:29 ..
lrwx------ 1 user user 64 Oct  7 16:29 0 -> /dev/pts/22
lrwx------ 1 user user 64 Oct  7 16:29 1 -> /dev/pts/22
lrwx------ 1 user user 64 Oct  7 16:29 2 -> /dev/pts/22
l-wx------ 1 user user 64 Oct  7 16:29 3 -> /home/user/123.txt

рддрдкрд╛рдИрд▓реЗ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреЗ рд░реВрдкрдорд╛, рд╣рд╛рдореАрд╕рдБрдЧ рд╣рд╛рдореНрд░реЛ 3 рдорд╛рдирдХ рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛рд╣рд░реВ рдЫрдиреН рд░ рдПрдЙрдЯрд╛ рдердк рд╣рд╛рдореАрд▓реЗ рдЦреЛрд▓реЗрдХрд╛ рдЫреМрдВред рдлрд╛рдЗрд▓ рд╕рд╛рдЗрдЬ рдЬрд╛рдБрдЪ рдЧрд░реМрдВ:

[user@localhost ]$ ls -lah 123.txt 
-rw-rw-r-- 1 user user 117M Oct  7 16:30 123.txt

рдбрд╛рдЯрд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рдЫ, рд╣рд╛рдореА рдлрд╛рдЗрд▓рдорд╛ рдЕрдиреБрдорддрд┐рд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдЫреМрдВ:

[user@localhost ]$ sudo chown root: 123.txt
[user@localhost ]$ ls -lah 123.txt 
-rw-rw-r-- 1 root root 168M Oct  7 16:31 123.txt
[user@localhost ]$ ls -lah 123.txt 
-rw-rw-r-- 1 root root 172M Oct  7 16:31 123.txt

рд╣рд╛рдореА рджреЗрдЦреНрдЫреМрдВ рдХрд┐ рдбрд╛рдЯрд╛ рдЕрдЭреИ рдкрдирд┐ рд▓реЗрдЦрд┐рдПрдХреЛ рдЫ, рдпрджреНрдпрдкрд┐ рд╣рд╛рдореНрд░реЛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рд╕рдБрдЧ рдлрд╛рдЗрд▓рдорд╛ рд▓реЗрдЦреНрдиреЗ рдЕрдиреБрдорддрд┐ рдЫреИрдиред рдпрд╕рд▓рд╛рдИ рд╣рдЯрд╛рдЙрди рдкреНрд░рдпрд╛рд╕ рдЧрд░реМрдВ:

[user@localhost ]$ sudo rm 123.txt 
[user@localhost ]$ ls 123.txt
ls: cannot access 123.txt: No such file or directory

рдбрд╛рдЯрд╛ рдХрд╣рд╛рдБ рд▓реЗрдЦрд┐рдПрдХреЛ рдЫ? рд░ рддрд┐рдиреАрд╣рд░реВ рд╕рдмреИ рд▓реЗрдЦрд┐рдПрдХрд╛ рдЫрдиреН? рд╣рд╛рдореА рдЬрд╛рдБрдЪ рдЧрд░реНрдЫреМрдВ:

[user@localhost ]$ ls -la /proc/3762/fd
total 0
dr-x------ 2 user user  0 Oct  7 16:29 .
dr-xr-xr-x 9 user user  0 Oct  7 16:29 ..
lrwx------ 1 user user 64 Oct  7 16:29 0 -> /dev/pts/22
lrwx------ 1 user user 64 Oct  7 16:29 1 -> /dev/pts/22
lrwx------ 1 user user 64 Oct  7 16:29 2 -> /dev/pts/22
l-wx------ 1 user user 64 Oct  7 16:29 3 -> /home/user/123.txt (deleted)

рд╣реЛ, рд╣рд╛рдореНрд░реЛ рдлрд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдЕрдЭреИ рдЕрд╡рд╕реНрдерд┐рдд рдЫ рд░ рд╣рд╛рдореА рдпреЛ рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛рд▓рд╛рдИ рд╣рд╛рдореНрд░реЛ рдкреБрд░рд╛рдиреЛ рдлрд╛рдЗрд▓ рдЬрд╕реНрддреИ рд╡реНрдпрд╡рд╣рд╛рд░ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ, рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдкрдвреНрди, рд╕рдлрд╛ рдЧрд░реНрди рд░ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред

рдлрд╛рдЗрд▓ рд╕рд╛рдЗрдЬ рд╣реЗрд░реМрдВ:

[user@localhost ]$ lsof | grep 123.txt
python    31083             user    3w      REG                8,5   19923457   2621522 /home/user/123.txt

рдлрд╛рдЗрд▓рдХреЛ рд╕рд╛рдЗрдЬ резрепрепреирейрекрелрен рд╣реЛред рдлрд╛рдЗрд▓ рдЦрд╛рд▓реА рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реМрдВ:

[user@localhost ]$ truncate -s 0 /proc/31083/fd/3
[user@localhost ]$ lsof | grep 123.txt
python    31083             user    3w      REG                8,5  136318390   2621522 /home/user/123.txt

рддрдкрд╛рдИрд▓реЗ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреЗ рд░реВрдкрдорд╛, рдлрд╛рдЗрд▓рдХреЛ рдЖрдХрд╛рд░ рдорд╛рддреНрд░ рдмрдвреНрджреИ рдЫ рд░ рд╣рд╛рдореНрд░реЛ рдЯреНрд░рдВрдХрд▓реЗ рдХрд╛рдо рдЧрд░реЗрдиред рдкреНрд░рдгрд╛рд▓реА рдХрд▓ рдХрд╛рдЧрдЬрд╛рдд рд╣реЗрд░реМрдВ рдЦреБрд▓рд╛ред рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдлрд╛рдЗрд▓ рдЦреЛрд▓реНрджрд╛ O_APPEND рдлреНрд▓реНрдпрд╛рдЧ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВ рднрдиреЗ, рдкреНрд░рддреНрдпреЗрдХ рд▓реЗрдЦрдирдХреЛ рд╕рд╛рде, рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдорд▓реЗ рдлрд╛рдЗрд▓рдХреЛ рд╕рд╛рдЗрдЬ рдЬрд╛рдБрдЪ рдЧрд░реНрдЫ рд░ рдлрд╛рдЗрд▓рдХреЛ рдЫреЗрдЙрдорд╛ рдбрд╛рдЯрд╛ рд▓реЗрдЦреНрдЫ, рд░ рдпреЛ рдкрд░рдорд╛рдгреБ рд░реВрдкрдорд╛ рдЧрд░реНрдЫред рдпрд╕рд▓реЗ рдзреЗрд░реИ рдереНрд░реЗрдб рд╡рд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрд▓рд╛рдИ рдПрдЙрдЯреИ рдлрд╛рдЗрд▓рдорд╛ рд▓реЗрдЦреНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рддрд░ рд╣рд╛рдореНрд░реЛ рдХреЛрдбрдорд╛ рд╣рд╛рдореА рдпреЛ рдЭрдгреНрдбрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИрдиреМрдВред рд╣рд╛рдореАрд▓реЗ рдЯреНрд░рдВрдХ рдкрдЫрд┐ lsof рдорд╛ рдлрд░рдХ рдлрд╛рдЗрд▓ рд╕рд╛рдЗрдЬ рджреЗрдЦреНрди рд╕рдХреНрдЫреМрдВ рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓реЗрдЦрдирдХреЛ рд▓рд╛рдЧрд┐ рдлрд╛рдЗрд▓ рдЦреЛрд▓реНрдпреМрдВ, рдЬрд╕рдХреЛ рдЕрд░реНрде рд╣рд╛рдореНрд░реЛ рдХреЛрдбрдорд╛ рдЫред

with open("123.txt", "w") as f:

рд╣рд╛рдореАрд▓реЗ рд░рд╛рдЦреНрдиреБ рдкрд░реНрдЫ

with open("123.txt", "a") as f:

"w" рдЭрдгреНрдбрд╛рдХреЛ рд╕рд╛рде рдЬрд╛рдБрдЪ рдЧрд░реНрджреИ

[user@localhost ]$ strace -e trace=open python openforwrite.py 2>&1| grep 123.txt
open("123.txt", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3

рд░ "a" рдЭрдгреНрдбрд╛ рд╕рдВрдЧ

[user@localhost ]$ strace -e trace=open python openforwrite.py 2>&1| grep 123.txt
open("123.txt", O_WRONLY|O_CREAT|O_APPEND, 0666) = 3

рдкрд╣рд┐рд▓реЗ рдиреИ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ

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

рдлрд╛рдИрд▓ рд▓реЗрдЦреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдпрд╛рдкреНрдд рдбрд┐рд╕реНрдХ рд╕реНрдкреЗрд╕ рдирднрдПрдХреЛ рдмрд╛рд░реЗрдорд╛ рдореВрд▓ рдкреНрд░рд╢реНрдирдорд╛ рдлрд░реНрдХреЗрд░, рд╕рдорд╕реНрдпрд╛рд▓рд╛рдИ рдЕрдиреБрдХрд░рдг рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реМрдВред

рд╣рд╛рдореНрд░реЛ рд╡рд┐рднрд╛рдЬрдирдХреЛ рд▓рд╛рдЧрд┐ рдПрдЙрдЯрд╛ рдлрд╛рдЗрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ, рдЬреБрди рд╣рд╛рдореА рдЫреБрдЯреНрдЯреИ рдбрд┐рд╕реНрдХрдХреЛ рд░реВрдкрдорд╛ рдорд╛рдЙрдиреНрдЯ рдЧрд░реНрдиреЗрдЫреМрдВ:

[user@localhost ~]$ dd if=/dev/zero of=~/tempfile_for_article.dd bs=1M count=10
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.00525929 s, 2.0 GB/s
[user@localhost ~]$

рдПрдЙрдЯрд╛ рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реА рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реМрдВ:

[user@localhost ~]$ mkfs.ext4 ~/tempfile_for_article.dd
mke2fs 1.42.9 (28-Dec-2013)
/home/user/tempfile_for_article.dd is not a block special device.
Proceed anyway? (y,n) y
...
Writing superblocks and filesystem accounting information: done
[user@localhost ~]$

рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реА рдорд╛рдЙрдиреНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

[user@localhost ~]$ sudo mount ~/tempfile_for_article.dd /mnt/
[sudo] password for user: 
[user@localhost ~]$ df -h | grep mnt
/dev/loop0      8.7M  172K  7.9M   3% /mnt

рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рдорд╛рд▓рд┐рдХрд╕рдБрдЧ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдЫреМрдВ:

[user@localhost ~]$ sudo mkdir /mnt/logs
[user@localhost ~]$ sudo chown user: /mnt/logs

рд╣рд╛рдореНрд░реЛ рдХрд╛рд░реНрдпрдХреНрд░рдордорд╛ рдорд╛рддреНрд░ рд▓реЗрдЦреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдлрд╛рдЗрд▓ рдЦреЛрд▓реМрдВ:

with open("/mnt/logs/123.txt", "w") as f:

рд▓рдиреНрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН

[user@localhost ]$ python openforwrite.py 

рд╣рд╛рдореА рдХреЗрд╣рд┐ рд╕реЗрдХреЗрдиреНрдб рдкрд░реНрдЦрдиреНрдЫреМрдВ

[user@localhost ~]$ df -h | grep mnt
/dev/loop0      8.7M  8.0M     0 100% /mnt

рддреНрдпрд╕реЛрднрдП, рд╣рд╛рдореАрд╕рдБрдЧ рдпрд╕ рд▓реЗрдЦрдХреЛ рд╕реБрд░реБрдорд╛ рд╡рд░реНрдгрди рдЧрд░рд┐рдПрдХреЛ рд╕рдорд╕реНрдпрд╛ рдЫред рдЦрд╛рд▓реА рдард╛рдЙрдБ реж, резрежреж% рдУрдЧрдЯреЗрдХреЛ рдЫред

рд╣рд╛рдореА рд╕рдореНрдЭрдиреНрдЫреМрдВ рдХрд┐ рдХрд╛рд░реНрдпрдХрд╛ рд╕рд░реНрддрд╣рд░реВ рдЕрдиреБрд╕рд╛рд░, рд╣рд╛рдореА рд╣рд░рд╛рдЙрди рдирд╕рдХрд┐рдиреЗ рдзреЗрд░реИ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдбреЗрдЯрд╛ рд░реЗрдХрд░реНрдб рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрджреИрдЫреМрдВред рд░ рдПрдХреИ рд╕рдордпрдорд╛, рд╣рд╛рдореАрд▓реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреБрди: рд╕реБрд░реБ рдирдЧрд░реА рд╕реЗрд╡рд╛ рдареАрдХ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред

рдорд╛рдиреМрдВ рд╣рд╛рдореАрд╕рдБрдЧ рдЕрдЭреИ рдкрдирд┐ рдбрд┐рд╕реНрдХ рд╕реНрдкреЗрд╕ рдЫ, рддрд░ рдлрд░рдХ рд╡рд┐рднрд╛рдЬрдирдорд╛, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ /рдШрд░рдорд╛ред

рд╣рд╛рдореНрд░реЛ рдХреЛрдб "рдлреНрд▓рд╛рдЗрдорд╛ рдкреБрди: рдкреНрд░реЛрдЧреНрд░рд╛рдо" рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реМрдВред

рд╣рд╛рдореНрд░реЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ PID рд╣реЗрд░реМрдВ, рдЬрд╕рд▓реЗ рд╕рдмреИ рдбрд┐рд╕реНрдХ рд╕реНрдкреЗрд╕ рдЦрд╛рдПрдХреЛ рдЫ:

[user@localhost ~]$ ps axuf | grep [o]penfor
user 10078 27.2  0.0 128600  5744 pts/22   R+   11:06   0:02  |   _ python openforwrite.py

Gdb рдорд╛рд░реНрдлрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рдЬрдбрд╛рди рдЧрд░реНрдиреБрд╣реЛрд╕реН

[user@localhost ~]$ gdb -p 10078
...
(gdb) 

рдЦреБрд▓рд╛ рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛рд╣рд░реВ рд╣реЗрд░реМрдВ:

(gdb) shell ls -lah /proc/10078/fd/
total 0
dr-x------ 2 user user  0 Oct  8 11:06 .
dr-xr-xr-x 9 user user  0 Oct  8 11:06 ..
lrwx------ 1 user user 64 Oct  8 11:09 0 -> /dev/pts/22
lrwx------ 1 user user 64 Oct  8 11:09 1 -> /dev/pts/22
lrwx------ 1 user user 64 Oct  8 11:06 2 -> /dev/pts/22
l-wx------ 1 user user 64 Oct  8 11:09 3 -> /mnt/logs/123.txt

рд╣рд╛рдореА рдлрд╛рдИрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛ рдирдореНрдмрд░ 3 рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рд╣реЗрд░реНрдЫреМрдВ, рдЬреБрди рд╣рд╛рдореАрд▓рд╛рдИ рдЪрд╛рд╕реЛ рдЫ

(gdb) shell cat /proc/10078/fdinfo/3
pos:    8189952
flags:  0100001
mnt_id: 482

Python рд▓реЗ рдХреБрди рдкреНрд░рдгрд╛рд▓реА рдХрд▓ рдЧрд░реНрдЫ рднрдиреНрдиреЗ рдХреБрд░рд╛рд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрджреИ (рдорд╛рдерд┐ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН рдЬрд╣рд╛рдБ рд╣рд╛рдореАрд▓реЗ рд╕реНрдЯреНрд░реЗрд╕ рдЪрд▓рд╛рдпреМрдВ рд░ рдЦреБрд▓рд╛ рдХрд▓ рдлреЗрд▓рд╛ рдкрд╛рд░реНтАНрдпреМрдВ), рдлрд╛рдЗрд▓ рдЦреЛрд▓реНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореНрд░реЛ рдХреЛрдб рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрджрд╛, рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рддрд░реНрдлрдмрд╛рдЯ рдЖрдлреИрдВ рдкрдирд┐ рдЧрд░реНрдЫреМрдВ, рддрд░ рд╣рд╛рдореАрд▓рд╛рдИ O_WRONLY|O_CREAT| рдЪрд╛рд╣рд┐рдиреНрдЫред O_TRUNC рдмрд┐рдЯрд╣рд░реВ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рдирд╕рдБрдЧ рдмрджрд▓рд┐рдиреНрдЫрдиреНред рдпреЛ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, рдХрд░реНрдиреЗрд▓ рд╕реНрд░реЛрддрд╣рд░реВ рдЦреЛрд▓реНрдиреБрд╣реЛрд╕реН, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ рдпрд╣рд╛рдБ рд░ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН рдХреБрди рдЭрдгреНрдбрд╛рд╣рд░реВ рдХреЗрдХрд╛ рд▓рд╛рдЧрд┐ рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫрдиреН

# рдкрд░рд┐рднрд╛рд╖рд┐рдд O_WRONLY 00000001
# рдкрд░рд┐рднрд╛рд╖рд┐рдд O_CREAT 00000100
# рдкрд░рд┐рднрд╛рд╖рд┐рдд O_TRUNC 00001000

рд╣рд╛рдореА рд╕рдмреИ рдорд╛рдирд╣рд░реВ рдПрдХрдорд╛ рдЬреЛрдбреНрдЫреМрдВ, рд╣рд╛рдореАрд▓реЗ 00001101 рдкрд╛рдЙрдБрдЫреМрдВ

рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рдХрд▓ gdb рдмрд╛рдЯ рдЪрд▓рд╛рдЙрдБрдЫреМрдВ

(gdb) call open("/home/user/123.txt", 00001101,0666)
$1 = 4

рддреНрдпрд╕реЛрднрдП рд╣рд╛рдореАрд▓реЗ рдирдореНрдмрд░ 4 рдХреЛ рд╕рд╛рде рдирдпрд╛рдБ рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛ рд░ рдЕрд░реНрдХреЛ рд╡рд┐рднрд╛рдЬрдирдорд╛ рдирдпрд╛рдБ рдЦреБрд▓рд╛ рдлрд╛рдЗрд▓ рдкрд╛рдпреМрдВ, рд╣рд╛рдореА рдЬрд╛рдБрдЪ рдЧрд░реНрдЫреМрдВ:

(gdb) shell ls -lah /proc/10078/fd/
total 0
dr-x------ 2 user user  0 Oct  8 11:06 .
dr-xr-xr-x 9 user user  0 Oct  8 11:06 ..
lrwx------ 1 user user 64 Oct  8 11:09 0 -> /dev/pts/22
lrwx------ 1 user user 64 Oct  8 11:09 1 -> /dev/pts/22
lrwx------ 1 user user 64 Oct  8 11:06 2 -> /dev/pts/22
l-wx------ 1 user user 64 Oct  8 11:09 3 -> /mnt/logs/123.txt
l-wx------ 1 user user 64 Oct  8 11:15 4 -> /home/user/123.txt

рд╣рд╛рдореА рдкрд╛рдЗрдкрдХреЛ рд╕рд╛рде рдЙрджрд╛рд╣рд░рдг рд╕рдореНрдЭрдиреНрдЫреМрдВ - рдХрд╕рд░реА bash рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрджрдЫ, рд░ рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ dup2 рдкреНрд░рдгрд╛рд▓реА рдХрд▓ рд╕рд┐рдХреЗрдХрд╛ рдЫреМрдВред

рд╣рд╛рдореА рдПрдЙрдЯрд╛ рдлрд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░рд▓рд╛рдИ рдЕрд░реНрдХреЛрд╕рдБрдЧ рдмрджрд▓реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдЫреМрдВ

(gdb) call dup2(4,3)
$2 = 3

рдЬрд╛рдБрдЪ рдЧрд░реНрджреИ:

(gdb) shell ls -lah /proc/10078/fd/
total 0
dr-x------ 2 user user  0 Oct  8 11:06 .
dr-xr-xr-x 9 user user  0 Oct  8 11:06 ..
lrwx------ 1 user user 64 Oct  8 11:09 0 -> /dev/pts/22
lrwx------ 1 user user 64 Oct  8 11:09 1 -> /dev/pts/22
lrwx------ 1 user user 64 Oct  8 11:06 2 -> /dev/pts/22
l-wx------ 1 user user 64 Oct  8 11:09 3 -> /home/user/123.txt
l-wx------ 1 user user 64 Oct  8 11:15 4 -> /home/user/123.txt

рд╣рд╛рдореА рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛ 4 рдмрдиреНрдж рдЧрд░реНрдЫреМрдВ, рдХрд┐рдирдХрд┐ рд╣рд╛рдореАрд▓рд╛рдИ рдпрд╕рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЫреИрди:

(gdb) call close (4)
$1 = 0

рд░ gdb рдмрд╛рд╣рд┐рд░ рдирд┐рд╕реНрдХрдиреБрд╣реЛрд╕реН

(gdb) quit
A debugging session is active.

    Inferior 1 [process 10078] will be detached.

Quit anyway? (y or n) y
Detaching from program: /usr/bin/python2.7, process 10078

рдирдпрд╛рдБ рдлрд╛рдЗрд▓ рдЬрд╛рдБрдЪ рдЧрд░реНрджреИ:

[user@localhost ~]$ ls -lah /home/user/123.txt
-rw-rw-r-- 1 user user 5.1M Oct  8 11:18 /home/user/123.txt
[user@localhost ~]$ ls -lah /home/user/123.txt
-rw-rw-r-- 1 user user 7.1M Oct  8 11:18 /home/user/123.txt

рддрдкрд╛рдИрд▓реЗ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдбрд╛рдЯрд╛ рдирдпрд╛рдБ рдлрд╛рдЗрд▓рдорд╛ рд▓реЗрдЦрд┐рдПрдХреЛ рдЫ, рдкреБрд░рд╛рдиреЛ рдЬрд╛рдБрдЪ рдЧрд░реМрдВ:

[user@localhost ~]$ ls -lah /mnt/logs/123.txt 
-rw-rw-r-- 1 user user 7.9M Oct  8 11:08 /mnt/logs/123.txt

рдХреБрдиреИ рдбрд╛рдЯрд╛ рд╣рд░рд╛рдПрдХреЛ рдЫреИрди, рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рдХрд╛рдо рдЧрд░реНрджрдЫ, рд▓рдЧрд╣рд░реВ рдирдпрд╛рдБ рд╕реНрдерд╛рдирдорд╛ рд▓реЗрдЦрд┐рдПрдХрд╛ рдЫрдиреНред

рдХрд╛рдорд▓рд╛рдИ рдЕрд▓рд┐рдХрддрд┐ рдЬрдЯрд┐рд▓ рдмрдирд╛рдФрдВ

рдХрд▓реНрдкрдирд╛ рдЧрд░реМрдВ рдХрд┐ рдбрд╛рдЯрд╛ рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫ, рддрд░ рд╣рд╛рдореАрд╕рдБрдЧ рдХреБрдиреИ рдкрдирд┐ рд╡рд┐рднрд╛рдЬрдирдорд╛ рдбрд┐рд╕реНрдХ рд╕реНрдкреЗрд╕ рдЫреИрди рд░ рд╣рд╛рдореА рдбрд┐рд╕реНрдХ рдЬрдбрд╛рди рдЧрд░реНрди рд╕рдХреНрджреИрдиреМрдВред

рд╣рд╛рдореАрд▓реЗ рдХреЗ рдЧрд░реНрди рд╕рдХреНрдЫреМрдБ рд╣рд╛рдореНрд░реЛ рдбрд╛рдЯрд╛ рдХрддреИ рд░рд┐рдбрд┐рд░реЗрдХреНрдЯ рдЧрд░реНрди, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ рдкрд╛рдЗрдкрдорд╛, рд░ рдлрд▓рд╕реНрд╡рд░реВрдк рдбрд╛рдЯрд╛рд▓рд╛рдИ рдкрд╛рдЗрдкрдмрд╛рдЯ рдиреЗрдЯрд╡рд░реНрдХрдорд╛ рд░рд┐рдбрд┐рд░реЗрдХреНрдЯ рдЧрд░реНрдиреЗ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ рдиреЗрдЯрдХреНрдпрд╛рдЯред
рд╣рд╛рдореА mkfifo рдЖрджреЗрд╢рдХреЛ рд╕рд╛рде рдирд╛рдорд┐рдд рдкрд╛рдЗрдк рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рдпрд╕рдорд╛ рдХреБрдиреИ рдЦрд╛рд▓реА рдард╛рдЙрдБ рдирднрдП рдкрдирд┐ рдпрд╕рд▓реЗ рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реАрдорд╛ рд╕реНрдпреВрдбреЛ рдлрд╛рдЗрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреЗрдЫред

рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкреБрди: рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

[user@localhost ]$ python openforwrite.py 
[user@localhost ~]$ ps axuf | grep [o]pen
user  5946 72.9  0.0 128600  5744 pts/22   R+   11:27   0:20  |   _ python openforwrite.py
[user@localhost ~]$ ls -lah /proc/5946/fd
total 0
dr-x------ 2 user user  0 Oct  8 11:27 .
dr-xr-xr-x 9 user user  0 Oct  8 11:27 ..
lrwx------ 1 user user 64 Oct  8 11:28 0 -> /dev/pts/22
lrwx------ 1 user user 64 Oct  8 11:28 1 -> /dev/pts/22
lrwx------ 1 user user 64 Oct  8 11:27 2 -> /dev/pts/22
l-wx------ 1 user user 64 Oct  8 11:28 3 -> /mnt/logs/123.txt
[user@localhost ~]$ df -h | grep mnt
/dev/loop0      8.7M  8.0M     0 100% /mnt

рддреНрдпрд╣рд╛рдБ рдХреБрдиреИ рдбрд┐рд╕реНрдХ рдард╛рдЙрдБ рдЫреИрди, рддрд░ рд╣рд╛рдореАрд▓реЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рддреНрдпрд╣рд╛рдБ рдирд╛рдорд┐рдд рдкрд╛рдЗрдк рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдЫреМрдВ:

[user@localhost ~]$ mkfifo /mnt/logs/megapipe
[user@localhost ~]$ ls -lah /mnt/logs/megapipe 
prw-rw-r-- 1 user user 0 Oct  8 11:28 /mnt/logs/megapipe

рдЕрдм рд╣рд╛рдореАрд▓реЗ рдиреЗрдЯрд╡рд░реНрдХ рдорд╛рд░реНрдлрдд рдЕрд░реНрдХреЛ рд╕рд░реНрднрд░рдорд╛ рдпреЛ рдкрд╛рдЗрдкрдорд╛ рдЬрд╛рдиреЗ рд╕рдмреИ рдбрд╛рдЯрд╛рд▓рд╛рдИ рдХреБрдиреИ рди рдХреБрдиреИ рд░реВрдкрдорд╛ рд░реНтАНрдпрд╛рдк рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ; рдЙрд╣реА рдиреЗрдЯрдХреНрдпрд╛рдЯ рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреБрдХреНрдд рдЫред

рд╕рд░реНрднрд░ remote-server.example.com рдорд╛ рд╣рд╛рдореА рдЪрд▓рд╛рдЙрдБрдЫреМрдВ

[user@localhost ~]$ nc -l 7777 > 123.txt 

рд╣рд╛рдореНрд░реЛ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╕рд░реНрднрд░рдорд╛ рд╣рд╛рдореА рдЫреБрдЯреНрдЯреИ рдЯрд░реНрдорд┐рдирд▓рдорд╛ рд╕реБрд░реБ рдЧрд░реНрдЫреМрдВ

[user@localhost ~]$ nc remote-server.example.com 7777 < /mnt/logs/megapipe 

рдЕрдм рдкрд╛рдЗрдкрдорд╛ рд╕рдорд╛рдкреНрдд рд╣реБрдиреЗ рд╕рдмреИ рдбрд╛рдЯрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдиреЗрдЯрдХреНрдпрд╛рдЯрдорд╛ stdin рдорд╛ рдЬрд╛рдиреНрдЫ, рдЬрд╕рд▓реЗ рдпрд╕рд▓рд╛рдИ рдкреЛрд░реНрдЯ 7777 рдорд╛ рдиреЗрдЯрд╡рд░реНрдХрдорд╛ рдкрдард╛рдЙрдиреЗрдЫред

рд╣рд╛рдореАрд▓реЗ рдЧрд░реНрдиреБрдкрд░реНрдиреЗ рднрдиреЗрдХреЛ рдпреЛ рдирд╛рдордХреЛ рдкрд╛рдЗрдкрдорд╛ рд╣рд╛рдореНрд░реЛ рдбрд╛рдЯрд╛ рд▓реЗрдЦреНрди рд╕реБрд░реБ рдЧрд░реНрдиреБ рд╣реЛред

рд╣рд╛рдореАрд╕рдБрдЧ рдкрд╣рд┐рд▓реЗ рдиреИ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫ:

[user@localhost ~]$ ps axuf | grep [o]pen
user  5946 99.8  0.0 128600  5744 pts/22   R+   11:27 169:27  |   _ python openforwrite.py
[user@localhost ~]$ ls -lah /proc/5946/fd
total 0
dr-x------ 2 user user  0 Oct  8 11:27 .
dr-xr-xr-x 9 user user  0 Oct  8 11:27 ..
lrwx------ 1 user user 64 Oct  8 11:28 0 -> /dev/pts/22
lrwx------ 1 user user 64 Oct  8 11:28 1 -> /dev/pts/22
lrwx------ 1 user user 64 Oct  8 11:27 2 -> /dev/pts/22
l-wx------ 1 user user 64 Oct  8 11:28 3 -> /mnt/logs/123.txt

рд╕рдмреИ рдлреНрд▓реНрдпрд╛рдЧрд╣рд░реВ рдордзреНрдпреЗ, рд╣рд╛рдореАрд▓рд╛рдИ O_WRONLY рдорд╛рддреНрд░ рдЪрд╛рд╣рд┐рдиреНрдЫ рдХрд┐рдирднрдиреЗ рдлрд╛рдЗрд▓ рдкрд╣рд┐рд▓реЗ рдиреИ рдЕрд╡рд╕реНрдерд┐рдд рдЫ рд░ рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ рдЦрд╛рд▓реА рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрдиред

[user@localhost ~]$ gdb -p 5946
...
(gdb) call open("/mnt/logs/megapipe", 00000001,0666)
$1 = 4
(gdb) shell ls -lah /proc/5946/fd
total 0
dr-x------ 2 user user  0 Oct  8 11:27 .
dr-xr-xr-x 9 user user  0 Oct  8 11:27 ..
lrwx------ 1 user user 64 Oct  8 11:28 0 -> /dev/pts/22
lrwx------ 1 user user 64 Oct  8 11:28 1 -> /dev/pts/22
lrwx------ 1 user user 64 Oct  8 11:27 2 -> /dev/pts/22
l-wx------ 1 user user 64 Oct  8 11:28 3 -> /mnt/logs/123.txt
l-wx------ 1 user user 64 Oct  8 14:20 4 -> /mnt/logs/megapipe
(gdb) call dup2(4,3)
$2 = 3
(gdb) shell ls -lah /proc/5946/fd
total 0
dr-x------ 2 user user  0 Oct  8 11:27 .
dr-xr-xr-x 9 user user  0 Oct  8 11:27 ..
lrwx------ 1 user user 64 Oct  8 11:28 0 -> /dev/pts/22
lrwx------ 1 user user 64 Oct  8 11:28 1 -> /dev/pts/22
lrwx------ 1 user user 64 Oct  8 11:27 2 -> /dev/pts/22
l-wx------ 1 user user 64 Oct  8 11:28 3 -> /mnt/logs/megapipe
l-wx------ 1 user user 64 Oct  8 14:20 4 -> /mnt/logs/megapipe
(gdb) call close(4)
$3 = 0
(gdb) shell ls -lah /proc/5946/fd
total 0
dr-x------ 2 user user  0 Oct  8 11:27 .
dr-xr-xr-x 9 user user  0 Oct  8 11:27 ..
lrwx------ 1 user user 64 Oct  8 11:28 0 -> /dev/pts/22
lrwx------ 1 user user 64 Oct  8 11:28 1 -> /dev/pts/22
lrwx------ 1 user user 64 Oct  8 11:27 2 -> /dev/pts/22
l-wx------ 1 user user 64 Oct  8 11:28 3 -> /mnt/logs/megapipe
(gdb) quit
A debugging session is active.

    Inferior 1 [process 5946] will be detached.

Quit anyway? (y or n) y
Detaching from program: /usr/bin/python2.7, process 5946

рд░рд┐рдореЛрдЯ рд╕рд░реНрднрд░ remote-server.example.com рдЬрд╛рдБрдЪ рдЧрд░реНрджреИ

[user@localhost ~]$ ls -lah 123.txt 
-rw-rw-r-- 1 user user 38M Oct  8 14:21 123.txt

рдбрд╛рдЯрд╛ рдЖрдЙрдБрджреИрдЫ, рд╣рд╛рдореА рд╕рдорд╕реНрдпрд╛ рд╕рд░реНрднрд░ рдЬрд╛рдБрдЪ рдЧрд░реНрдЫреМрдВ

[user@localhost ~]$ ls -lah /mnt/logs/
total 7.9M
drwxr-xr-x 2 user user 1.0K Oct  8 11:28 .
drwxr-xr-x 4 root     root     1.0K Oct  8 10:55 ..
-rw-rw-r-- 1 user user 7.9M Oct  8 14:17 123.txt
prw-rw-r-- 1 user user    0 Oct  8 14:22 megapipe

рдбрд╛рдЯрд╛ рдмрдЪрдд рд╣реБрдиреНрдЫ, рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реБрдиреНрдЫред

рдо Degiro рдмрд╛рдЯ рдореЗрд░рд╛ рд╕рд╣рдХрд░реНрдореАрд╣рд░реВрд▓рд╛рдИ рдирдорд╕реНрдХрд╛рд░ рднрдиреНрди рдпреЛ рдЕрд╡рд╕рд░ рд▓рд┐рдиреНрдЫреБред
рд░реЗрдбрд┐рдпреЛ-рдЯреА рдкреЛрдбрдХрд╛рд╕реНрдЯрд╣рд░реВ рд╕реБрдиреНрдиреБрд╣реЛрд╕реНред

рд╕рдм рдард┐рдХред

рдЧреГрд╣рдХрд╛рд░реНрдпрдХреЛ рд░реВрдкрдорд╛, рдо рд╕реБрдЭрд╛рд╡ рджрд┐рдиреНрдЫреБ рдХрд┐ рддрдкрд╛рдЗрдБ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛ рдмрд┐рд░рд╛рд▓реЛ рд░ рдирд┐рджреНрд░рд╛рдорд╛ рдХреЗ рд╣реБрдиреЗрдЫ рдпрджрд┐ рддрдкрд╛рдЗрдБ рдирд┐рдореНрди рдЖрджреЗрд╢ рдЪрд▓рд╛рдЙрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ:

[user@localhost ~]$ cat /dev/zero 2>/dev/null| sleep 10000

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

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