เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพเด•เตเด•เตŠเดชเตเดชเด‚ เดฒเดฟเดจเด•เตเดธเดฟเดฒเต† เดซเดฏเตฝ เดกเดฟเดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตผ

เด’เดฐเดฟเด•เตเด•เตฝ, เด’เดฐเต เด…เดญเดฟเดฎเตเด–เดคเตเดคเดฟเดจเดฟเดŸเต†, เดŽเดจเตเดจเต‹เดŸเต เดšเต‹เดฆเดฟเดšเตเดšเต, เดกเดฟเดธเตเด•เดฟเตฝ เดธเตเดฅเดฒเดฎเดฟเดฒเตเดฒเดพเดคเดพเดฏเดคเดฟเดจเดพเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเดคเตเดค เด’เดฐเต เดธเต‡เดตเดจเด‚ เดจเดฟเด™เตเด™เตพ เด•เดฃเตเดŸเต†เดคเตเดคเดฟเดฏเดพเตฝ เดจเดฟเด™เตเด™เตพ เดŽเดจเตเดคเตเดšเต†เดฏเตเดฏเตเด‚?

เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เดˆ เดธเตเดฅเดฒเด‚ เดŽเดจเตเดคเดพเดฃเต†เดจเตเดจเต เดžเดพเตป เด•เดพเดฃเดพเดฎเต†เดจเตเดจเตเด‚, เดธเดพเดงเตเดฏเดฎเต†เด™เตเด•เดฟเตฝ, เดžเดพเตป เดธเตเดฅเดฒเด‚ เดตเตƒเดคเตเดคเดฟเดฏเดพเด•เตเด•เตเดฎเต†เดจเตเดจเตเด‚ เดžเดพเตป เดฎเดฑเตเดชเดŸเดฟ เดจเตฝเด•เดฟ.
เด…เดชเตเดชเต‹เตพ เด‡เดจเตเดฑเตผเดตเตเดฏเต‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเดฏเดพเตพ เดšเต‹เดฆเดฟเดšเตเดšเต, เดชเดพเตผเดŸเตเดŸเต€เดทเดจเดฟเตฝ เดถเต‚เดจเตเดฏเดฎเดพเดฏ เด‡เดŸเดฎเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเดฒเต‹, เดŽเดจเตเดจเดพเตฝ เดฎเตเดดเตเดตเตป เดธเตเดฅเดฒเดตเตเด‚ เดŽเดŸเตเด•เตเด•เตเดจเตเดจ เดซเดฏเดฒเตเด•เดณเตŠเดจเตเดจเตเด‚ เดจเดฟเด™เตเด™เตพ เด•เดพเดฃเตเดจเตเดจเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเดฒเต‹?

เด‡เดคเดฟเดจเต‹เดŸเต เดžเดพเตป เดชเดฑเดžเตเดžเต, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดŽเดฒเตเดฒเดพเดฏเตเดชเตเดชเต‹เดดเตเด‚ เด“เดชเตเดชเตบ เดซเดฏเตฝ เดกเดฟเดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเดฑเตเด•เตพ เดจเต‹เด•เตเด•เดพเด‚, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต lsof เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต, เดฒเดญเตเดฏเดฎเดพเดฏ เดŽเดฒเตเดฒเดพ เดธเตเดฅเดฒเดตเตเด‚ เดเดคเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดพเดฃเต เดŽเดŸเตเดคเตเดคเดคเต†เดจเตเดจเต เดฎเดจเดธเดฟเดฒเดพเด•เตเด•เตเด•, เดคเตเดŸเตผเดจเตเดจเต เดกเดพเดฑเตเดฑ เด†เดตเดถเตเดฏเดฎเดพเดฃเต‹ เดŽเดจเตเดจเดคเดฟเดจเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เตพเด•เตเด•เดจเตเดธเดฐเดฟเดšเตเดšเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเด‚. .

เด…เดญเดฟเดฎเตเด–เด‚ เดจเดŸเดคเตเดคเตเดจเตเดจเดฏเดพเตพ เด…เดตเดธเดพเดจ เดตเดพเด•เตเด•เดฟเตฝ เดŽเดจเตเดจเต† เดคเดŸเดธเตเดธเดชเตเดชเต†เดŸเตเดคเตเดคเดฟ, เด…เดตเดจเตเดฑเต† เดšเต‹เดฆเตเดฏเดคเตเดคเต‹เดŸเต เดšเต‡เตผเดคเตเดคเต: "เดจเดฎเตเด•เตเด•เต เดกเดพเดฑเตเดฑ เด†เดตเดถเตเดฏเดฎเดฟเดฒเตเดฒเต†เดจเตเดจเต เด•เดฐเตเดคเตเด•, เด‡เดคเต เด’เดฐเต เดกเต€เดฌเด—เต เดฒเต‹เด—เต เดฎเดพเดคเตเดฐเดฎเดพเดฃเต, เดชเด•เตเดทเต‡ เด’เดฐเต เดกเต€เดฌเด—เต เดŽเดดเตเดคเดพเตป เด•เดดเดฟเดฏเดพเดคเตเดคเดคเดฟเดจเดพเตฝ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ"?

"เดถเดฐเดฟ," เดžเดพเตป เดฎเดฑเตเดชเดŸเดฟ เดชเดฑเดžเตเดžเต, "เดจเดฎเตเด•เตเด•เต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเดฟเดฒเต† เดกเต€เดฌเด—เต เด“เดซเดพเด•เตเด•เดฟ เด…เดคเต เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเด•เตเด•เดพเด‚."
เด…เดญเดฟเดฎเตเด–เด‚ เดจเดŸเดคเตเดคเตเดจเตเดจเดฏเดพเตพ เดŽเดคเดฟเตผเดคเตเดคเต: "เด‡เดฒเตเดฒ, เดžเด™เตเด™เตพเด•เตเด•เต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ, เดžเด™เตเด™เตพเด•เตเด•เต เด‡เดชเตเดชเต‹เดดเตเด‚ เดชเตเดฐเดงเดพเดจเดชเตเดชเต†เดŸเตเดŸ เดกเดพเดฑเตเดฑ เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเดฟเตฝ เดธเด‚เดญเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เดชเตเดฐเดงเดพเดจเดชเตเดชเต†เดŸเตเดŸ เด•เตเดฒเดฏเดจเตเดฑเตเด•เตพ เดธเต‡เดตเดจเดตเตเดฎเดพเดฏเดฟ เดคเดจเตเดจเต† เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเต เดตเต€เดฃเตเดŸเตเด‚ เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเดพเตป เดžเด™เตเด™เตพเด•เตเด•เต เดจเดฟเตผเดฌเดจเตเดงเดฟเด•เตเด•เดพเดจเดพเดตเดฟเดฒเตเดฒ."

โ€œเดถเดฐเดฟ,โ€ เดžเดพเตป เดชเดฑเดžเตเดžเต, โ€œเดจเดฎเตเด•เตเด•เต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เดกเดพเดฑเตเดฑ เดžเด™เตเด™เตพเด•เตเด•เต เดชเตเดฐเดงเดพเดจเดฎเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, ls เด•เดฎเดพเตปเดกเดฟเตฝ เด‡เดคเต เด•เดพเดฃเตเดจเตเดจเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝเดชเตเดชเต‹เดฒเตเด‚, เดซเดฏเตฝ เดกเดฟเดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเดฑเดฟเดฒเต‚เดŸเต† เดˆ เดคเตเดฑเดจเตเดจ เดซเดฏเตฝ เด•เตเดฒเดฟเดฏเตผ เดšเต†เดฏเตเดฏเดพเด‚. เดซเดฏเตฝ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ."

เด…เดญเดฟเดฎเตเด–เด‚ เดจเดŸเดคเตเดคเดฟเดฏเดฏเดพเตพ เดธเดจเตเดคเต‹เดทเดฟเดšเตเดšเต, เดชเด•เตเดทเต‡ เดžเดพเตป เด…เด™เตเด™เดจเต†เดฏเดพเดฏเดฟเดฐเตเดจเตเดจเดฟเดฒเตเดฒ.

เด…เดชเตเดชเต‹เตพ เดžเดพเตป เดšเดฟเดจเตเดคเดฟเดšเตเดšเต, เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเดพเดฃเต เดŽเดจเตเดฑเต† เด…เดฑเดฟเดตเต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจ เดตเตเดฏเด•เตเดคเดฟ เด•เต‚เดŸเตเดคเตฝ เด†เดดเดคเตเดคเดฟเตฝ เด•เตเดดเดฟเดšเตเดšเดฟเดŸเดพเดคเตเดคเดคเต? เดŽเดจเตเดจเดพเตฝ เดกเดพเดฑเตเดฑ เดŽเดฒเตเดฒเดพเดคเตเดคเดฟเดจเตเดฎเตเดชเดฐเดฟ เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต เดŽเด™เตเด•เดฟเดฒเต‹? เดจเดฎเตเด•เตเด•เต เด’เดฐเต เดชเตเดฐเต‹เดธเดธเตเดธเต เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เดธเตเดตเดคเดจเตเดคเตเดฐ เด‡เดŸเดฎเดฟเดฒเตเดฒเดพเดคเตเดค เด’เดฐเต เดชเดพเตผเดŸเตเดŸเต€เดทเดจเดฟเตฝ เดชเตเดฐเต‹เดธเดธเตเดธเต เดซเดฏเตฝ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดŽเดดเตเดคเตเดจเตเดจเต เดŽเด™เตเด•เดฟเดฒเต‹? เด‡เดคเดฟเดจเด•เด‚ เดŽเดดเตเดคเดฟเดฏ เดกเดพเดฑเตเดฑ เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดˆ เดชเตเดฐเด•เตเดฐเดฟเดฏ เดŽเดดเตเดคเตเดจเตเดจเดคเต‹ เดŽเดดเตเดคเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเดจเตเดจเดคเต‹ เด†เดฏ เดกเดพเดฑเตเดฑเดฏเตเด‚ เดจเดฎเตเด•เตเด•เต เดจเดทเตโ€ŒเดŸเดชเตเดชเต†เดŸเตเดคเตเดคเดพเตป เด•เดดเดฟเดฏเตเดจเตเดจเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดŽเดจเตเดคเตเดšเต†เดฏเตเดฏเตเด‚?

เดคเตเดธเดฟเด•เตเด•เต

เดŽเดจเตเดฑเต† เด•เดฐเดฟเดฏเดฑเดฟเดจเตเดฑเต† เดคเตเดŸเด•เตเด•เดคเตเดคเดฟเตฝ, เด‰เดชเดฏเต‹เด•เตเดคเตƒ เดตเดฟเดตเดฐเด™เตเด™เตพ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด†เดตเดถเตเดฏเดฎเดพเดฏ เด’เดฐเต เดšเต†เดฑเดฟเดฏ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เดžเดพเตป เดถเตเดฐเดฎเดฟเดšเตเดšเต. เดŽเดจเตเดจเดฟเดŸเตเดŸเต เดžเดพเตป เดšเดฟเดจเตเดคเดฟเดšเตเดšเต, เดŽเดจเดฟเด•เตเด•เต เดŽเด™เตเด™เดจเต† เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต† เด…เดตเดจเตเดฑเต† เดกเดพเดฑเตเดฑเดฏเตเดฎเดพเดฏเดฟ เดชเตŠเดฐเตเดคเตเดคเดชเตเดชเต†เดŸเตเดคเตเดคเดพเดจเดพเด•เตเด‚. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดŽเดจเดฟเด•เตเด•เต เด‡เดตเดพเดจเต‹เดตเต เด‡เดตเดพเตป เด‡เดตเดพเดจเต‹เดตเดฟเดšเตเดšเต เด‰เดฃเตเดŸเต, เด…เดฆเตเดฆเต‡เดนเดคเตเดคเดฟเดจเต เดšเดฟเดฒ เดตเดฟเดตเดฐเด™เตเด™เดณเตเดฃเตเดŸเต, เดชเด•เตเดทเต‡ เด…เดตเดฐเตเดฎเดพเดฏเดฟ เดŽเด™เตเด™เดจเต† เดšเด™เตเด™เดพเดคเตเดคเด‚ เด•เต‚เดŸเดพเด‚? "Tuzik" เดŽเดจเตเดจเต เดชเต‡เดฐเดฟเดŸเตเดŸเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดจเดพเดฏ เดˆ เด‡เดตเดจเตเดฑเต† เดคเดจเตเดจเต†เดฏเดพเดฃเต†เดจเตเดจเต เดŽเดจเดฟเด•เตเด•เต เดจเต‡เดฐเดฟเดŸเตเดŸเต เดšเต‚เดฃเตเดŸเดฟเด•เตเด•เดพเดฃเดฟเด•เตเด•เดพเด‚. เดŽเดจเตเดจเดพเตฝ เด…เดตเตป เดคเดจเตเดฑเต† เดชเต‡เดฐเต เดฎเดพเดฑเตเดฑเดฟ เด‡เดตเดพเดจเต เดชเด•เดฐเด‚ เด’เดฒเตเดฏ เด†เดฏเดฟ เดฎเดพเดฑเดฟเดฏเดพเดฒเต‹? เด…เดชเตเดชเต‹เตพ เดจเดฎเตเดฎเตเดŸเต† เด’เดฒเตเดฏ เด‡เดตเดพเดจเต‹เดตเตเดจ เด‡เดตเดพเดจเต‹เดตเดฏเตเด•เตเด•เต เด‡เดจเดฟ เด’เดฐเต เดจเดพเดฏ เด‰เดฃเตเดŸเดพเด•เดฟเดฒเตเดฒเต†เดจเตเดจเตเด‚ เดžเด™เตเด™เดณเตเดŸเต† เดคเตเดธเดฟเด•เตเด•เต เด‡เดชเตเดชเต‹เดดเตเด‚ เดจเดฟเดฒเดตเดฟเดฒเดฟเดฒเตเดฒเดพเดคเตเดค เด‡เดตเดพเตปเดฑเต‡เดคเดพเดฃเต†เดจเตเดจเตเด‚ เด…เดคเต เดฎเดพเดฑเตเด‚. เด“เดฐเต‹ เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเตเด‚ เด’เดฐเต เด…เดฆเตเดตเดฟเดคเต€เดฏ เดเดกเดจเตเดฑเดฟเดซเดฏเตผ (เดเดกเดฟ) เดจเตฝเด•เตเดจเตเดจ เด’เดฐเต เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดˆ เดชเตเดฐเดถเตเดจเด‚ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดพเตป เดธเดนเดพเดฏเดฟเดšเตเดšเต, เดŽเดจเตเดฑเต† เดคเตเดธเดฟเด•เตเด•เต เดˆ เดเดกเดฟเดฏเตเดฎเดพเดฏเดฟ เดฌเดจเตเดงเดฟเดชเตเดชเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ เด‡เดคเต เด’เดฐเต เดธเต€เดฐเดฟเดฏเตฝ เดจเดฎเตเดชเตผ เดฎเดพเดคเตเดฐเดฎเดพเดฏเดฟเดฐเตเดจเตเดจเต. เด…เด™เตเด™เดจเต†, เดคเตเดธเดฟเด•เตเด•เดฟเดจเตเดฑเต† เด‰เดŸเดฎเดฏเตเด•เตเด•เต เดเดกเดฟ เดจเดฎเตเดชเตผ 2 เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเต, เดšเดฟเดฒ เดธเดฎเดฏเด™เตเด™เดณเดฟเตฝ เด‡เดตเดพเตป เดˆ เดเดกเดฟเด•เตเด•เต เด•เต€เดดเดฟเดฒเดพเดฏเดฟเดฐเตเดจเตเดจเต, เดคเตเดŸเตผเดจเตเดจเต เด’เดฒเดฟเดฏ เด‡เดคเต‡ เดเดกเดฟเด•เตเด•เต เด•เต€เดดเดฟเดฒเดพเดฏเดฟ. เดฎเดจเตเดทเตเดฏเดคเตเดตเดคเตเดคเดฟเดจเตเดฑเต†เดฏเตเด‚ เดฎเตƒเด—เดธเด‚เดฐเด•เตเดทเดฃเดคเตเดคเดฟเดจเตเดฑเต†เดฏเตเด‚ เดชเตเดฐเดถเตเดจเด‚ เดชเตเดฐเดพเดฏเต‹เด—เดฟเด•เดฎเดพเดฏเดฟ เดชเดฐเดฟเดนเดฐเดฟเดšเตเดšเต.

เดซเดฏเตฝ เดกเดฟเดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตผ

เดˆ เดซเดฏเดฒเดฟเดจเตŠเดชเตเดชเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดซเดฏเดฒเดฟเดจเตเดฑเต†เดฏเตเด‚ เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเดจเตเดฑเต†เดฏเตเด‚ เดชเตเดฐเดถเตโ€Œเดจเด‚ เดจเดฎเตเดฎเตเดŸเต† เดจเดพเดฏเดฏเตเดŸเต†เดฏเตเด‚ เดฎเดจเตเดทเตเดฏเดจเตเดฑเต†เดฏเตเด‚ เดเด•เดฆเต‡เดถเด‚ เดคเตเดฒเตเดฏเดฎเดพเดฃเต. เดžเดพเตป ivan.txt เดŽเดจเตเดจ เด’เดฐเต เดซเดฏเตฝ เดคเตเดฑเดจเตเดจเต เด…เดคเดฟเตฝ tuzik เดŽเดจเตเดจ เดตเดพเด•เตเด•เต เดŽเดดเตเดคเดพเตป เดคเตเดŸเด™เตเด™เดฟ, เดชเด•เตเดทเต‡ เดซเดฏเดฒเดฟเตฝ "t" เดŽเดจเตเดจ เด†เดฆเตเดฏ เด…เด•เตเดทเดฐเด‚ เดŽเดดเตเดคเดพเตป เดฎเดพเดคเตเดฐเดฎเต‡ เดŽเดจเดฟเด•เตเด•เต เด•เดดเดฟเดžเตเดžเตเดณเตเดณเต‚, เดˆ เดซเดฏเดฒเดฟเดจเต† เด†เดฐเต†เด™เตเด•เดฟเดฒเตเด‚ เดชเตเดจเตผเดจเดพเดฎเด•เดฐเดฃเด‚ เดšเต†เดฏเตเดคเต, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, olya.txt. เดŽเดจเตเดจเดพเตฝ เดซเดฏเตฝ เด…เดคเต‡เดชเดŸเดฟ เดคเตเดŸเดฐเตเดจเตเดจเต, เดŽเดจเตเดฑเต† เดŽเดฏเตโ€Œเดธเต เด‡เดชเตเดชเต‹เดดเตเด‚ เด…เดคเดฟเตฝ เดฐเต‡เด–เดชเตเดชเต†เดŸเตเดคเตเดคเดพเตป เดžเดพเตป เด†เด—เตเดฐเดนเดฟเด•เตเด•เตเดจเตเดจเต. เด“เดฐเต‹ เดคเดตเดฃเดฏเตเด‚ เด’เดฐเต เดธเดฟเดธเตเดฑเตเดฑเด‚ เด•เต‹เตพ เดตเดดเดฟ เด’เดฐเต เดซเดฏเตฝ เดคเตเดฑเด•เตเด•เตเดจเตเดจเต เดคเตเดฑเด•เตเด•เตเด• เดเดคเตŠเดฐเต เดชเตเดฐเต‹เด—เตเดฐเดพเดฎเดฟเด‚เด—เต เดญเดพเดทเดฏเดฟเดฒเตเด‚ เดŽเดจเดฟเด•เตเด•เต เด’เดฐเต เดซเดฏเดฒเดฟเดฒเต‡เด•เตเด•เต เดŽเดจเตเดจเต† เดšเต‚เดฃเตเดŸเดฟเด•เตเด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เด…เดฆเตเดตเดฟเดคเต€เดฏ เดเดกเดฟ เดฒเดญเดฟเด•เตเด•เตเดจเตเดจเต, เดˆ เดเดกเดฟเดฏเดพเดฃเต เดซเดฏเตฝ เดกเดฟเดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตผ. เดˆ เดซเดฏเตฝ เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ เดŽเดจเตเดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เด†เดฐเดพเดฃเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เดŽเดจเตเดจเดคเต เดชเตเดฐเดถเตเดจเดฎเดฒเตเดฒ, เด‡เดคเต เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เดพเด‚, เดชเต‡เดฐเตเดฎเดพเดฑเตเดฑเดพเด‚, เด‰เดŸเดฎเดฏเต† เดฎเดพเดฑเตเดฑเดพเด‚, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดŽเดดเตเดคเดพเดจเตเด‚ เดตเดพเดฏเดฟเด•เตเด•เดพเดจเตเดฎเตเดณเตเดณ เด…เดตเด•เดพเดถเด™เตเด™เตพ เดŽเดŸเตเดคเตเดคเตเด•เดณเดฏเดพเด‚, เดŽเดจเดฟเด•เตเด•เต เด‡เดชเตเดชเต‹เดดเตเด‚ เด†เด•เตโ€Œเดธเดธเต เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚ เด…เดคเดฟเดฒเต‡เด•เตเด•เต, เด•เดพเดฐเดฃเด‚ เดซเดฏเตฝ เดคเตเดฑเด•เตเด•เตเดจเตเดจ เดธเดฎเดฏเดคเตเดคเต, เด…เดคเต เดตเดพเดฏเดฟเด•เตเด•เดพเดจเตเด‚/เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดŽเดดเตเดคเดพเดจเตเดฎเตเดณเตเดณ เด…เดตเด•เดพเดถเด‚ เดŽเดจเดฟเด•เตเด•เตเดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเต, เด…เดคเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เดŽเดจเดฟเด•เตเด•เต เด•เดดเดฟเดžเตเดžเต, เด…เดคเดพเดฏเดคเต เดžเดพเตป เด…เดคเต เดคเตเดŸเดฐเดฃเด‚.

เดฒเดฟเดจเด•เตเดธเดฟเตฝ, เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เด“เดฐเต‹ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด‚ (เดชเตเดฐเต‹เดธเดธเตเดธเต) 3 เดŽเดจเตเดจ เดจเดฎเตเดชเดฑเตเดณเตเดณ 0,1,2 เดกเดฟเดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตผ เดซเดฏเดฒเตเด•เตพ libc เดฒเตˆเดฌเตเดฐเดฑเดฟ เดคเตเดฑเด•เตเด•เตเดจเตเดจเต. เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดตเดฐเด™เตเด™เตพ เดฒเดฟเด™เตเด•เตเด•เดณเดฟเตฝ เด•เดพเดฃเดพเด‚ เดฎเดจเตเดทเตเดฏเตป 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

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดˆ เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเตเดตเดฏเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚ เดธเตโ€ŒเดŸเตเดฐเต‡เดธเต -เดŽเดซเต เด…เด•เดคเตเดคเต เดŽเดจเตเดคเดพเดฃเต เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเดคเต†เดจเตเดจเต เด•เดพเดฃเตเด•, เดชเด•เตเดทเต‡ เดžเดพเตป เดจเดฟเด™เตเด™เดณเต‹เดŸเต เดšเตเดฐเตเด•เตเด•เดฎเดพเดฏเดฟ เดชเดฑเดฏเดพเด‚.

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

เดคเตเดŸเตผเดจเตเดจเต เดธเดฟเดธเตเดฑเตเดฑเด‚ เด•เต‹เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต เด•เตเดฒเต‹เตบ เดฌเดพเดทเต เดฐเดฃเตเดŸเต เดšเตˆเตฝเดกเต เดชเตเดฐเต‹เดธเดธเตเดธเตเด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต, เดžเด™เตเด™เดณเตเดŸเต† เดฎเต‚เดจเตเดจเต เดชเตเดฐเด•เตเดฐเดฟเดฏเด•เตพ เด‡เดคเตเดชเต‹เดฒเต† เด•เดพเดฃเดชเตเดชเต†เดŸเตเด‚:

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 เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเตเดณเตเดณ เด†เดฆเตเดฏ เดšเตˆเตฝเดกเต เดฌเดพเดทเต เดชเตเดฐเด•เตเดฐเดฟเดฏเดฏเดฟเตฝ, เดธเดฟเดธเตเดฑเตเดฑเด‚ เด•เต‹เตพ เดกเตเดฏเต‚เดชเตเดชเต2, เดžเด™เตเด™เดณเตเดŸเต† STDOUT เดซเดฏเตฝ เดกเดฟเดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตผ เดจเดฎเตเดชเตผ 1 เดชเตˆเดชเตเดชเดฟเดฒเต‡เด•เตเด•เต เดšเต‚เดฃเตเดŸเดฟเด•เตเด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดซเดฏเตฝ เดกเดฟเดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเดฑเดพเดฏเดฟ เดฎเดพเดฑเตเดฑเตเดจเตเดจเต, เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เด‡เดคเต เดจเดฎเตเดชเตผ 3 เด†เดฃเต. เด…เด™เตเด™เดจเต†, PID 9004 เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด†เดฆเตเดฏเดคเตเดคเต† เดšเตˆเตฝเดกเต เดชเตเดฐเต‹เดธเดธเตเดธเต STDOUT-เดฒเต‡เด•เตเด•เต เดŽเดดเตเดคเตเดจเตเดจเดคเต†เดฒเตเดฒเดพเด‚ เดชเตˆเดชเตเดชเต เดฌเดซเดฑเดฟเตฝ เดธเตเดตเดฏเดฎเต‡เดต เด…เดตเดธเดพเดจเดฟเด•เตเด•เตเด‚.

PID 9005 เด‰เดณเตเดณ เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เดšเตˆเตฝเดกเต เดชเตเดฐเต‹เดธเดธเตเดธเดฟเตฝ, เดซเดฏเตฝ เดกเดฟเดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตผ STDIN เดจเดฎเตเดชเตผ 2 เดฎเดพเดฑเตเดฑเดพเตป bash dup0 เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เด‡เดชเตเดชเต‹เตพ PID 9005 เด‰เดณเตเดณ เดžเด™เตเด™เดณเตเดŸเต† เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เดฌเดพเดทเต เดตเดพเดฏเดฟเด•เตเด•เตเดจเตเดจเดคเต†เดฒเตเดฒเดพเด‚ เดชเตˆเดชเตเดชเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเดพเดฏเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเด‚.

เด‡เดคเดฟเดจเตเดถเต‡เดทเด‚, 3, 4 เดจเดฎเตเดชเดฑเตเด•เดณเตเดณเตเดณ เดซเดฏเตฝ เดกเดฟเดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเดฑเตเด•เดณเตเด‚ เดšเตˆเตฝเดกเต เดชเตเดฐเต‹เดธเดธเตเดธเตเด•เดณเดฟเตฝ เด…เดŸเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด•เดพเดฐเดฃเด‚ เด…เดต เดฎเต‡เดฒเดฟเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดฟเดฒเตเดฒ.

เดซเดฏเตฝ เดกเดฟเดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตผ 255 เดžเดพเตป เดฎเดจเดƒเดชเต‚เตผเดตเตเดตเด‚ เด…เดตเด—เดฃเดฟเด•เตเด•เตเดจเตเดจเต; เด‡เดคเต เดฌเดพเดทเต เดฎเตเด–เต‡เดจ เดคเดจเตเดจเต† เด†เดจเตเดคเดฐเดฟเด• เด†เดตเดถเตเดฏเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, เดšเตˆเตฝเดกเต เดชเตเดฐเต‹เดธเดธเตเด•เดณเดฟเดฒเตเด‚ เด‡เดคเต เด…เดŸเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเด‚.

เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, PID 9004 เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเตเดณเตเดณ เด†เดฆเตเดฏ เดšเตˆเตฝเดกเต เดชเตเดฐเต‹เดธเดธเตเดธเดฟเตฝ, เดฌเดพเดทเต เด’เดฐเต เดธเดฟเดธเตเดฑเตเดฑเด‚ เด•เต‹เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดคเตเดŸเด™เตเด™เตเดจเตเดจเต exec เด•เดฎเดพเตปเดกเต เดฒเตˆเดจเดฟเตฝ เดžเด™เตเด™เตพ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟเดฏ เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเดฌเดฟเตพ เดซเดฏเตฝ, เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ เด…เดคเต /usr/bin/cat เด†เดฃเต.

PID 9005 เด‰เดณเตเดณ เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เดšเตˆเตฝเดกเต เดชเตเดฐเต‹เดธเดธเตเดธเดฟเตฝ, เดžเด™เตเด™เดณเตเดŸเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ /usr/bin/sleep-เตฝ เดžเด™เตเด™เตพ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดฟเดฏ เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเดฌเดฟเตพ เดฌเดพเดทเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต.

เด“เดชเตเดชเตบ เด•เต‹เตพ เดšเต†เดฏเตเดค เดธเดฎเดฏเดคเตเดคเต 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

เดซเดฏเตฝ เดตเดฒเตเดชเตเดชเด‚ 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

เด’เดชเตเดชเด‚ "เดŽ" เดชเดคเดพเด•เดฏเตเด‚

[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) เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดฟเตฝ เดตเดฟเดตเดฟเดง เดคเดฒเดคเตเดคเดฟเดฒเตเดณเตเดณ เดฒเต‹เด—เดฟเด‚เด—เต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เด‡เดคเดฟเดจเด•เด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดชเตเดฐเต‹เด—เตเดฐเดพเด‚ เดฏเดฅเดพเตผเดคเตเดฅเดคเตเดคเดฟเตฝ เดŽเดดเตเดคเดพเดจเตเด‚ เดฎเดพเดฑเตเดฑเดพเดจเตเดฎเตเดณเตเดณ เด•เดดเดฟเดตเต Linux เดจเตฝเด•เตเดจเตเดจเต, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เดณเตเดŸเต† เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เดฎเดพเดฑเตเดฑเตเด•, เด’เดฐเต เดฌเตเดฐเต‡เด•เตเด•เตโ€Œเดชเต‹เดฏเดฟเดจเตเดฑเต เดธเดœเตเดœเดฎเดพเด•เตเด•เตเด• เดฎเตเดคเดฒเดพเดฏเดต.

เด’เดฐเต เดซเดฏเตฝ เดŽเดดเตเดคเดพเตป เดฎเดคเดฟเดฏเดพเดฏ เดกเดฟเดธเตเด•เดฟเตฝ เด‡เดŸเดฎเดฟเดฒเตเดฒ เดŽเดจเตเดจ เดฏเดฅเดพเตผเดคเตเดฅ เดšเต‹เดฆเตเดฏเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดฎเดŸเด™เตเด™เตเดฎเตเดชเต‹เตพ, เดชเตเดฐเดถเตเดจเด‚ เด…เดจเตเด•เดฐเดฟเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เดพเด‚.

เดจเดฎเตเดฎเตเดŸเต† เดชเดพเตผเดŸเตเดŸเต€เดทเดจเดพเดฏเดฟ เดจเดฎเตเด•เตเด•เต เด’เดฐเต เดซเดฏเตฝ เด‰เดฃเตเดŸเดพเด•เตเด•เดพเด‚, เด…เดคเต เดจเดฎเตเดฎเตพ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดกเดฟเดธเตเด•เดพเดฏเดฟ เดฎเตŒเดฃเตเดŸเต เดšเต†เดฏเตเดฏเตเด‚:

[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

เดœเดฟเดกเดฟเดฌเดฟ เดตเดดเดฟ เดชเตเดฐเต‹เดธเดธเตเดธเดฟเดฒเต‡เด•เตเด•เต เด•เดฃเด•เตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเด•

[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

เดชเตˆเดคเตเดคเตบ เดŽเดจเตเดคเต เดธเดฟเดธเตเดฑเตเดฑเด‚ เด•เต‹เตพ เด‰เดฃเตเดŸเดพเด•เตเด•เตเดจเตเดจเต เดŽเดจเตเดจเดคเต เดฎเดจเดธเตเดธเดฟเตฝ เดตเต†เดšเตเดšเตเด•เตŠเดฃเตเดŸเต (เดฎเตเด•เดณเดฟเตฝ เดŽเดตเดฟเดŸเต†เดฏเดพเดฃเต เดžเด™เตเด™เตพ เดธเตโ€ŒเดŸเตเดฐเต†เดฏเดฟเดธเต เด“เดชเตเดชเตบ เดšเต†เดฏเตเดคเต เด“เดชเตเดชเตบ เด•เต‹เตพ เด•เดฃเตเดŸเต†เดคเตเดคเดฟเดฏเดคเต†เดจเตเดจเต เด•เดพเดฃเตเด•), เด’เดฐเต เดซเดฏเตฝ เดคเตเดฑเด•เตเด•เดพเตป เดžเด™เตเด™เดณเตเดŸเต† เด•เต‹เดกเต เดชเตเดฐเต‹เดธเดธเตเดธเต เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ, เดžเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเต‹เดธเดธเดฟเดจเต เดตเต‡เดฃเตเดŸเดฟ เดžเด™เตเด™เตพ เดคเดจเตเดจเต† เด…เดคเต เดคเดจเตเดจเต† เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เดชเด•เตเดทเต‡ เดžเด™เตเด™เตพเด•เตเด•เต O_WRONLY|O_CREAT| O_TRUNC เดฌเดฟเดฑเตเดฑเตเด•เตพ เด’เดฐเต เดธเด‚เด–เตเดฏเดพ เดฎเต‚เดฒเตเดฏเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเด•เตเด•เตเดจเตเดจเต. เด‡เดคเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด•เต‡เตผเดฃเตฝ เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ เดคเตเดฑเด•เตเด•เตเด• เด‡เดตเดฟเดŸเต† เดเดคเตŠเด•เตเด•เต† เดชเดคเดพเด•เด•เดณเดพเดฃเต เดŽเดจเตเดคเดฟเดจเต เด‰เดคเตเดคเดฐเดตเดพเดฆเดฟเด•เดณเต†เดจเตเดจเต เดจเต‹เด•เตเด•เตเด•

#เดคเต†เดฑเตเดฑเดพเดฏ 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) 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

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•