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

рдПрдХрджрд╛, рдПрдХрд╛ рдореБрд▓рд╛рдЦрддреАрджрд░рдореНрдпрд╛рди, рдорд▓рд╛ рд╡рд┐рдЪрд╛рд░рд▓реЗ рдЧреЗрд▓реЗ рдХреА, рдбрд┐рд╕реНрдХрдордзреНрдпреЗ рдЬрд╛рдЧрд╛ рд╕рдВрдкрд▓реНрдпрд╛рдореБрд│реЗ рдПрдЦрд╛рджреА рд╕реЗрд╡рд╛ рдХрд╛рд░реНрдп рдХрд░рдд рдирд╕реЗрд▓ рддрд░ рддреБрдореНрд╣реА рдХрд╛рдп рдХрд░рд╛рд▓?

рдЕрд░реНрдерд╛рдд, рдореА рдЙрддреНрддрд░ рджрд┐рд▓реЗ рдХреА рдпрд╛ рдЬрд╛рдЧреЗрд╡рд░ рдХрд╛рдп рд╡реНрдпрд╛рдкрд▓реЗ рдЖрд╣реЗ рддреЗ рдореА рдкрд╛рд╣реАрди рдЖрдгрд┐ рд╢рдХреНрдп рдЕрд╕рд▓реНрдпрд╛рд╕ рдореА рддреА рдЬрд╛рдЧрд╛ рд╕реНрд╡рдЪреНрдЫ рдХрд░реЗрди.
рдордЧ рдореБрд▓рд╛рдЦрддрдХрд╛рд░рд╛рдиреЗ рд╡рд┐рдЪрд╛рд░рд▓реЗ, рдЬрд░ рд╡рд┐рднрд╛рдЬрдирд╛рд╡рд░ рдореЛрдХрд│реА рдЬрд╛рдЧрд╛ рдирд╕реЗрд▓, рдкрд░рдВрддреБ рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рд░реНрд╡ рдЬрд╛рдЧрд╛ рдШреЗрдгрд╛рд▒реНрдпрд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рдлрд╛рдЗрд▓реНрд╕ рджрд┐рд╕рдд рдирд╛рд╣реАрдд рддрд░?

рдпрд╛рд╡рд░ рдореА рдореНрд╣рдгрд╛рд▓реЛ рдХреА рддреБрдореНрд╣реА рдиреЗрд╣рдореА рдУрдкрди рдлрд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░реНрд╕ рдкрд╛рд╣реВ рд╢рдХрддрд╛, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде lsof рдХрдорд╛рдВрдбрд╕рд╣, рдЖрдгрд┐ рдХреЛрдгрддреНрдпрд╛ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирдиреЗ рд╕рд░реНрд╡ рдЙрдкрд▓рдмреНрдз рдЬрд╛рдЧрд╛ рдШреЗрддрд▓реНрдпрд╛ рдЖрд╣реЗрдд рд╣реЗ рд╕рдордЬреВрди рдШреЗрдК рд╢рдХрддрд╛ рдЖрдгрд┐ рдирдВрддрд░ рдбреЗрдЯрд╛ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдХреА рдирд╛рд╣реА рдпрд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рддреБрдореНрд╣реА рдкрд░рд┐рд╕реНрдерд┐рддреАрдиреБрд╕рд╛рд░ рдХрд╛рд░реНрдп рдХрд░реВ рд╢рдХрддрд╛. .

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

тАЬрдареАрдХ рдЖрд╣реЗ,тАЭ рдореА рдЙрддреНрддрд░ рджрд┐рд▓реЗ, тАЬрдЖрдореНрд╣реА рдНрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдордзреАрд▓ рдбреАрдмрдЧ рдмрдВрдж рдХрд░реВ рд╢рдХрддреЛ рдЖрдгрд┐ рддреЗ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХрд░реВ рд╢рдХрддреЛ.тАЭ
рдореБрд▓рд╛рдЦрддрдХрд╛рд░рд╛рдиреЗ рдЖрдХреНрд╖реЗрдк рдШреЗрддрд▓рд╛: "рдирд╛рд╣реА, рдЖрдореНрд╣реА рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА, рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдЕрдЬреВрдирд╣реА рдорд╣рддреНрддреНрд╡рд╛рдЪрд╛ рдбреЗрдЯрд╛ рдореЗрдорд░реАрдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдЖрд╣реЗ рдЖрдгрд┐ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ рдХреНрд▓рд╛рдпрдВрдЯ рд╕реЗрд╡реЗрд╢реАрдЪ рдЬреЛрдбрд▓реЗрд▓реЗ рдЖрд╣реЗрдд, рдЬреНрдпрд╛рдВрдирд╛ рдЖрдореНрд╣реА рдкреБрдиреНрд╣рд╛ рдХрдиреЗрдХреНрдЯ рдХрд░рдгреНрдпрд╛рд╕ рднрд╛рдЧ рдкрд╛рдбреВ рд╢рдХрдд рдирд╛рд╣реА."

тАЬрдареАрдХ рдЖрд╣реЗ,тАЭ рдореА рдореНрд╣рдгрд╛рд▓реЛ, тАЬрдЬрд░ рдЖрдкрдг рдНрдкреНрд▓рд┐рдХреЗрд╢рди рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХрд░реВ рд╢рдХрдд рдирд╕рд▓реЛ рдЖрдгрд┐ рдбреЗрдЯрд╛ рдЖрдкрд▓реНрдпрд╛рд╕рд╛рдареА рдорд╣рддреНрддреНрд╡рд╛рдЪрд╛ рдирд╕реЗрд▓, рддрд░ рдЖрдкрдг рд╣реА рдЙрдШрдбрд▓реЗрд▓реА рдлрд╛рдИрд▓ рдлрд╛рдИрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░рджреНрд╡рд╛рд░реЗ рд╕рд╛рдл рдХрд░реВ рд╢рдХрддреЛ, рдЬрд░реА рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рддреА ls рдХрдорд╛рдВрдбрдордзреНрдпреЗ рджрд┐рд╕рдд рдирд╕рд▓реА рддрд░реАрд╣реА. рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдорд╡рд░.

рдореБрд▓рд╛рдЦрдд рдШреЗрдгрд╛рд░рд╛ рдЦреВрд╢ рдЭрд╛рд▓рд╛, рдкрдг рдореА рдирд╛рд╣реА.

рдордЧ рдореА рд╡рд┐рдЪрд╛рд░ рдХреЗрд▓рд╛, рдорд╛рдЭреНрдпрд╛ рдЬреНрдЮрд╛рдирд╛рдЪреА рдЪрд╛рдЪрдгреА рдШреЗрдгрд╛рд░реА рд╡реНрдпрдХреНрддреА рдЕрдзрд┐рдХ рдЦреЛрд▓ рдХрд╛ рдХрд░рдд рдирд╛рд╣реА? рдкрдг рд╢реЗрд╡рдЯреА рдбреЗрдЯрд╛ рдорд╣рддреНрддреНрд╡рд╛рдЪрд╛ рдЕрд╕реЗрд▓ рддрд░? рдЬрд░ рдЖрдкрдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА, рдЖрдгрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдлрд╛рдИрд▓ рд╕рд┐рд╕реНрдЯреАрдорд▓рд╛ рд╡рд┐рднрд╛рдЬрдирд╛рд╡рд░ рд▓рд┐рд╣рд┐рддреЗ рдЬреНрдпрд╛рдордзреНрдпреЗ рдореЛрдХрд│реА рдЬрд╛рдЧрд╛ рдирд╛рд╣реА? рдЬрд░ рдЖрдкрдг рдХреЗрд╡рд│ рдЖрдзреАрдЪ рд▓рд┐рд╣рд┐рд▓реЗрд▓рд╛ рдбреЗрдЯрд╛рдЪ рдЧрдорд╛рд╡реВ рд╢рдХрдд рдирд╛рд╣реА рддрд░ рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд▓рд┐рд╣рд┐рддреЛ рдХрд┐рдВрд╡рд╛ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рддреЛ рддреЛ рдбреЗрдЯрд╛ рджреЗрдЦреАрд▓ рдЧрдорд╛рд╡реВ рд╢рдХрдд рдирд╛рд╣реА?

рддреБрдЭрд┐рдХ

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

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

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

рд▓рд┐рдирдХреНрд╕рдордзреНрдпреЗ, libc рд▓рд╛рдпрдмреНрд░рд░реА рдкреНрд░рддреНрдпреЗрдХ рдЪрд╛рд▓реВ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдНрдкреНрд▓рд┐рдХреЗрд╢рдирд╕рд╛рдареА (рдкреНрд░реЛрд╕реЗрд╕) 3 рдХреНрд░рдорд╛рдВрдХрд╛рдЪреНрдпрд╛ 0,1,2 рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдлрд╛рдЗрд▓реНрд╕ рдЙрдШрдбрддреЗ. рдЕрдзрд┐рдХ рдорд╛рд╣рд┐рддреА рд▓рд┐рдВрдХреНрд╕рд╡рд░ рдорд┐рд│реВ рд╢рдХрддреЗ рдорд╛рдгреВрд╕ stdio ╨╕ рдорд╛рдгреВрд╕ stdout

  • рдлрд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ 0 рд▓рд╛ 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 рдХрдбреЗ рд╕реБрд░рдХреНрд╖рд┐рддрдкрдгреЗ рджреБрд░реНрд▓рдХреНрд╖ рдХрд░реВ рд╢рдХрддрд╛; рддреЗ рддреНрдпрд╛рдЪреНрдпрд╛ рдЧрд░рдЬрд╛рдВрд╕рд╛рдареА рдмреЕрд╢рдиреЗрдЪ рдЙрдШрдбрд▓реЗ рд╣реЛрддреЗ, рд▓рд┐рдВрдХ рдХреЗрд▓реЗрд▓реНрдпрд╛ рд▓рд╛рдпрдмреНрд░рд░реАрджреНрд╡рд╛рд░реЗ рдирд╛рд╣реА.

рдЖрддрд╛ рд╕рд░реНрд╡ 3 рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдлрд╛рдЗрд▓реНрд╕ рд╕реНрдпреВрдбреЛ рдЯрд░реНрдорд┐рдирд▓ рдЙрдкрдХрд░рдгрд╛рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗрдд /dev/pts, рдкрд░рдВрддреБ рддрд░реАрд╣реА рдЖрдореНрд╣реА рддреНрдпрд╛рдВрдирд╛ рд╣рд╛рддрд╛рд│реВ рд╢рдХрддреЛ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреНрдпрд╛рдВрдирд╛ рджреБрд╕рд▒реНрдпрд╛ рдХрдиреНрд╕реЛрд▓рдордзреНрдпреЗ рдЪрд╛рд▓рд╡рд╛

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

рдЖрдгрд┐ рдкрд╣рд┐рд▓реНрдпрд╛ рдХрдиреНрд╕реЛрд▓рдордзреНрдпреЗ рдЖрдкрдг рдкрд╛рд╣реВ

[user@localhost ]$ hello world

рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдЖрдгрд┐ рдкрд╛рдИрдк

рддреБрдореНрд╣реА рдпрд╛ 3 рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдлрд╛рдЗрд▓реНрд╕ рдХреЛрдгрддреНрдпрд╛рд╣реА рдкреНрд░рдХреНрд░рд┐рдпреЗрдд рд╕рд╣рдЬрдкрдгреЗ рдУрд╡реНрд╣рд░рд░рд╛рдЗрдб рдХрд░реВ рд╢рдХрддрд╛, рдмреЕрд╢рд╕рд╣, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде рджреЛрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдВрдирд╛ рдЬреЛрдбрдгрд╛рд▒реНрдпрд╛ рдкрд╛рдИрдкрджреНрд╡рд╛рд░реЗ, рдкрд╣рд╛

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

рддреБрдореНрд╣реА рд╣реА рдХрдорд╛рдВрдб рд╕реНрд╡рддрдГ рдЪрд╛рд▓рд╡реВ рд╢рдХрддрд╛ strace -f рдЖрдгрд┐ рдЖрдд рдХрд╛рдп рдЪрд╛рд▓рд▓реЗ рдЖрд╣реЗ рддреЗ рдкрд╣рд╛, рдкрд░рдВрддреБ рдореА рддреБрдореНрд╣рд╛рд▓рд╛ рдереЛрдбрдХреНрдпрд╛рдд рд╕рд╛рдВрдЧреЗрди.

PID 15771 рд╕рд╣ рдЖрдордЪреА рдкреЕрд░реЗрдВрдЯ рдмреЕрд╢ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЖрдордЪреНрдпрд╛ рдХрдорд╛рдВрдбрдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рдЖрдгрд┐ рдЖрдореНрд╣рд╛рд▓рд╛ рдиреЗрдордХреЗ рдХрд┐рддреА рдХрдорд╛рдВрдбреНрд╕ рдЪрд╛рд▓рд╡рд╛рдпрдЪреЗ рдЖрд╣реЗрдд рд╣реЗ рд╕рдордЬрддреЗ, рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд рддреНрдпрд╛рдкреИрдХреА рджреЛрди рдЖрд╣реЗрдд: рдорд╛рдВрдЬрд░ рдЖрдгрд┐ рдЭреЛрдк. рдмреЕрд╢рд▓рд╛ рдорд╛рд╣рд┐рдд рдЖрд╣реЗ рдХреА рддреНрдпрд╛рд▓рд╛ рджреЛрди рдореВрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рддрдпрд╛рд░ рдХрд░рдгреЗ рдЖрдгрд┐ рддреНрдпрд╛рдВрдирд╛ рдПрдХрд╛ рдкрд╛рдИрдкрдордзреНрдпреЗ рд╡рд┐рд▓реАрди рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдПрдХреВрдг, рдмреЕрд╢рд▓рд╛ 2 рдмрд╛рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЖрдгрд┐ рдПрдХ рдкрд╛рдИрдк рд▓рд╛рдЧреЗрд▓.

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

рдкрд╛рд▓рдХ рдкреНрд░рдХреНрд░рд┐рдпреЗрд╕рд╛рдареА, рдЕрд╕реЗ рджрд┐рд╕рддреЗ рдХреА рддреЗрдереЗ рдЖрдзреАрдЪ рдПрдХ рдкрд╛рдИрдк рдЖрд╣реЗ, рдкрд░рдВрддреБ рдЕрджреНрдпрд╛рдк рдХреЛрдгрддреАрд╣реА рдореВрд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╛рд╣реАрдд:

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 рджреБрд░реНрд▓рдХреНрд╖рд┐рдд рдХрд░рддреЛ; рддреЛ рдмреЕрд╢рджреНрд╡рд╛рд░реЗрдЪ рдЕрдВрддрд░реНрдЧрдд рд╣реЗрддреВрдВрд╕рд╛рдареА рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рддреЛ рдЖрдгрд┐ рдЪрд╛рдЗрд▓реНрдб рдкреНрд░реЛрд╕реЗрд╕рдордзреНрдпреЗ рджреЗрдЦреАрд▓ рдмрдВрдж рдХреЗрд▓рд╛ рдЬрд╛рдИрд▓.

рдкреБрдвреЗ, PID 9004 рд╕рд╣ рдкрд╣рд┐рд▓реНрдпрд╛ рдЪрд╛рдЗрд▓реНрдб рдкреНрд░рдХреНрд░рд┐рдпреЗрдордзреНрдпреЗ, рдмреЕрд╢ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕ рдкреНрд░рд╛рд░рдВрдн рдХрд░рддреЗ exec рдЖрдореНрд╣реА рдХрдорд╛рдВрдб рд▓рд╛рдЗрдирд╡рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реА рдПрдХреНрдЭрд┐рдХреНрдпреВрдЯреЗрдмрд▓ рдлрд╛рдЗрд▓, рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд рддреА /usr/bin/cat рдЖрд╣реЗ.

PID 9005 рд╕рд╣ рджреБрд╕рд▒реНрдпрд╛ рдЪрд╛рдЗрд▓реНрдб рдкреНрд░рдХреНрд░рд┐рдпреЗрдордзреНрдпреЗ, bash рдЖрдореНрд╣реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗрд▓реЗ рджреБрд╕рд░реЗ рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯреЗрдмрд▓ рдЪрд╛рд▓рд╡рддреЗ, рдЖрдордЪреНрдпрд╛ рдмрд╛рдмрддреАрдд /usr/bin/sleep.

рдПрдХреНрдЭрд┐рдХ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдлрд╛рдИрд▓ рд╣рдБрдбрд▓ рдмрдВрдж рдХрд░рдд рдирд╛рд╣реА рдЬреЛрдкрд░реНрдпрдВрдд рддреЗ рдУ_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 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдж рд▓рд┐рд╣рд┐рддреЛ. рд╢рд┐рд╡рд╛рдп, рдЬрд░ рдХрд╛рд╣реА рдХрд╛рд░рдгрд╛рд╕реНрддрд╡ рдЖрдореНрд╣реА рдбрд┐рд╕реНрдХрд╡рд░ рдбреЗрдЯрд╛ рд▓рд┐рд╣реВ рд╢рдХрд▓реЛ рдирд╛рд╣реА, рддрд░ рдЖрдореНрд╣реА рдпрд╛рдХрдбреЗ рджреБрд░реНрд▓рдХреНрд╖ рдХрд░реВ рдЖрдгрд┐ рдПрдХрд╛ рд╕реЗрдХрдВрджрд╛рдд рдкреБрдиреНрд╣рд╛ рдбреЗрдЯрд╛ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реВ. рдореА Python рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдЙрджрд╛рд╣рд░рдгрд╛рдд рддреБрдореНрд╣реА рдЗрддрд░ рдХреЛрдгрддреАрд╣реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛.

[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

рдлрд╛рдЗрд▓рдЪрд╛ рдЖрдХрд╛рд░ 19923457 рдЖрд╣реЗ. рдлрд╛рдЗрд▓ рд╕рд╛рдл рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реВрдпрд╛:

[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

рддрд░, рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдпрд╛ рд▓реЗрдЦрд╛рдЪреНрдпрд╛ рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рд╡рд░реНрдгрди рдХреЗрд▓реЗрд▓реА рд╕рдорд╕реНрдпрд╛ рдЖрд╣реЗ. рдореЛрдХрд│реА рдЬрд╛рдЧрд╛ 0, 100% рд╡реНрдпрд╛рдкрд▓реЗрд▓реА.

рдЖрдореНрд╣реА рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рддреЛ рдХреА рдХрд╛рд░реНрдпрд╛рдЪреНрдпрд╛ рдЕрдЯреАрдВрдиреБрд╕рд╛рд░, рдЖрдореНрд╣реА рдЦреВрдк рдорд╣рддреНрд╡рд╛рдЪрд╛ рдбреЗрдЯрд╛ рд░реЗрдХреЙрд░реНрдб рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реАрдд рдЖрд╣реЛрдд рдЬреЛ рдЧрдорд╛рд╡рд▓рд╛ рдЬрд╛рдК рд╢рдХрдд рдирд╛рд╣реА. рдЖрдгрд┐ рддреНрдпрд╛рдЪ рд╡реЗрд│реА, рдЖрдореНрд╣рд╛рд▓рд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд░реАрд╕реНрдЯрд╛рд░реНрдЯ рди рдХрд░рддрд╛ рд╕реЗрд╡рд╛ рдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

рд╕рдордЬрд╛ рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдЕрдЬреВрдирд╣реА рдбрд┐рд╕реНрдХ рд╕реНрдкреЗрд╕ рдЖрд╣реЗ, рдкрд░рдВрддреБ рд╡реЗрдЧрд│реНрдпрд╛ рд╡рд┐рднрд╛рдЬрдирд╛рдд, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде /home рдордзреНрдпреЗ.

рдЪрд▓рд╛ рдЖрдордЪрд╛ рдХреЛрдб тАЬрдлрд┐рд░реВрди рдкреНрд░реЛрдЧреНрд░рд╛рдотАЭ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реВрдпрд╛.

рдЪрд▓рд╛ рдЖрдордЪреНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрдЪрд╛ 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

рдЖрдореНрд╣рд╛рд▓рд╛ рдкрд╛рдИрдкрдЪреЗ рдЙрджрд╛рд╣рд░рдг рдЖрдард╡рддреЗ - рдмреЕрд╢ рдлрд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХрд╕реЗ рдмрджрд▓рддреЗ рдЖрдгрд┐ рдЖрдореНрд╣реА рдЖрдзреАрдЪ 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

рдбреЗрдЯрд╛ рдЬрддрди рдХреЗрд▓рд╛ рдЬрд╛рддреЛ, рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рд▓реА рдЬрд╛рддреЗ.

рджреЗрдЧрд┐рд░реЛ рдпреЗрдереАрд▓ рдорд╛рдЭреНрдпрд╛ рд╕рд╣рдХрд╛рд▒реНрдпрд╛рдВрдирд╛ рдирдорд╕реНрдХрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреА рд╣реА рд╕рдВрдзреА рдореА рдШреЗрдд рдЖрд╣реЗ.
рд░реЗрдбрд┐рдУ-рдЯреА рдкреЙрдбрдХрд╛рд╕реНрдЯ рдРрдХрд╛.

рдСрд▓ рдж рдмреЗрд╕реНрдЯ.

рдЧреГрд╣рдкрд╛рда рдореНрд╣рдгреВрди, рдореА рд╕реБрдЪрд╡рд┐рддреЛ рдХреА рддреБрдореНрд╣реА рдЦрд╛рд▓реАрд▓ рдЖрджреЗрд╢ рдЪрд╛рд▓рд╡рд▓реНрдпрд╛рд╕, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛ рдорд╛рдВрдЬрд░ рдЖрдгрд┐ рдЭреЛрдкреЗрдд рдХрд╛рдп рдЕрд╕реЗрд▓ рдпрд╛рдЪрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░рд╛:

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

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛