เปเบเบฐเบเบณเบเปเบฝเบงเบเบฑเบเบฅเบฐเบเบปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบ
Hey Habr! เบเปเบฒเบเบฐเปเบเบปเปเบฒเบขเบฒเบเบเบฐเปเบญเบปเบฒเบกเบฒเปเบซเปเบเบงเบฒเบกเบชเบปเบเปเบเบเบญเบเบเปเบฒเบเบเบธเบเบเบญเบเบเบปเบเบเบงเบฒเบก - เบเบฒเบเปเบเบเบญเบเบงเบฑเบเบเบฐเบเบฐเบเบตเบเบตเปเบซเบเปเบฒเบชเบปเบเปเบเปเบเบเบงเบฒเบกเบเบดเบเปเบซเบฑเบเบเบญเบเบเปเบฒเบเบฐเปเบเบปเปเบฒ - OSTEP. เปเบญเบเบฐเบชเบฒเบเบเบตเปเบชเบปเบเบเบฐเบเบฒเบขเปเบฒเบเปเบฅเบดเบเปเบเบดเปเบเบเปเบฝเบงเบเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบญเบเบฅเบฐเบเบปเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบตเปเบเปเบฒเบเบเบท unix, เบเบท, เปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเบฐเบเบงเบเบเบฒเบ, เบเบฒเบเบฐเบฅเบฒเบเบเปเบฒเบเป, เบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ, เปเบฅเบฐเบญเบปเบเบเบฐเบเบญเบเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบเบญเบทเปเบเปเบเบตเปเบเบฐเบเบญเบเปเบเบฑเบ OS เบเบตเปเบเบฑเบเบชเบฐเปเบซเบก. เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบดเปเบเบเบปเปเบเบชเบฐเบเบฑเบเบเบญเบเบงเบฑเบเบชเบฐเบเบธเบเบฑเบเบซเบกเบปเบเบเบตเปเบเบตเป
เบงเบฝเบเบเบฒเบเบซเปเบญเบเบเบปเบเบฅเบญเบเบเปเบฝเบงเบเบฑเบเปเบฅเบทเปเบญเบเบเบตเปเบชเบฒเบกเบฒเบเบเบปเบเปเบเปเบเบตเปเบเบตเป:
เบเบปเปเบเบชเบฐเบเบฑเบ เบเบปเปเบเบชเบฐเบเบฑเบ เบเบฒเบเบเบฑเบเบเบปเบงเบชเปเบงเบเบเบปเบงเบเบญเบเบเปเบญเบ
เบเบฒเบเบชเปเบงเบเบญเบทเปเบเป:
เบชเปเบงเบเบเบต 1: เปเบเบฐเบเบณ เบเบฒเบเบเบต 2: Abstraction: เบเบฐเบเบงเบเบเบฒเบ เบชเปเบงเบเบเบต 3: เบเบฒเบเปเบเบฐเบเปเบฒ API เบเบฐเบเบงเบเบเบฒเบ
เบเปเบฒเบเบเบฑเบเบชเบฒเบกเบฒเบเบเบงเบเปเบเบดเปเบเบเปเบญเบเบเบฒเบเบเบญเบเบเปเบญเบเปเบเปเบเบตเป
เบเบธเบ! เบกเบตเบซเปเบญเบเบเบปเบเบฅเบญเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบฑเบเบเบฒเบเบเบตเป! เปเบเบดเปเบ
API เบเบฐเบเบงเบเบเบฒเบ
เปเบซเปเปเบเบดเปเบเบเบปเบงเบขเปเบฒเบเบเบญเบเบเบฒเบเบชเปเบฒเบเบเบฐเบเบงเบเบเบฒเบเปเบเบฅเบฐเบเบปเบ UNIX. เบกเบฑเบเปเบเบตเบเบเบถเปเบเปเบเบเบเปเบฒเบเบชเบญเบเบเบฒเบเปเบเบฅเบฐเบเบปเบ เบชเปเบญเบก () ะธ exec().
เบเบธเปเบกเบเบปเบ()
เบเบดเบเบฒเบฅเบฐเบเบฒเปเบเบเบเบฒเบเบเบตเปเปเบฎเบฑเบเปเบซเป fork() เปเบ. เบเบปเบโเบเบญเบโเบเบฒเบโเบเบฐโเบเบดโเบเบฑเบโเบเบญเบโเบเบปเบโเบเบฐโเปเบเบฑเบโเบเบฑเปเบโเบเปเปโเปเบโเบเบตเปโ.
เบเปเบญเบโเบญเบทเปเบโเบซเบกเบปเบโ, เบเบงเบโเปเบฎเบปเบฒโเปเบเบปเปเบฒโเบซเบเปเบฒ main() เปเบฅเบฐโเบเบดเบกโเบชเบฐโเบโเบฃเบดเบโเบเบตเปโเบซเบเปเบฒโเบเปโเปเบเปโ. เปเบชเบฑเปเบเบเบฐเบเบญเบเบกเบตเบเบปเบงเบฅเบฐเบเบธเบเบฐเบเบงเบเบเบฒเบเปเบเบดเปเบเปเบเบเบปเปเบเบชเบฐเบเบฑเบเปเบญเบตเปเบเบงเปเบฒ เบญเบฑเบเปเบชเบเบเปเบญเบเบเปเบญเบ เบซเบผเบทเบเบปเบงเบฅเบฐเบเบธเบเบฐเบเบงเบเบเบฒเบ. เบเบปเบงเบฅเบฐเบเบธเบเบตเปเบเบทเบเบเปเบฒเปเบเปเปเบ UNIX เปเบเบทเปเบญเบญเปเบฒเบเบญเบตเบเปเบเบดเบเบเบฐเบเบงเบเบเบฒเบ. เบเปเบฒเบชเบฑเปเบเบเปเปเปเบเบเบฐเปเบเบซเบฒ fork(). เปเบเบเบธเบเบเบตเป, เบชเปเบฒเปเบเบปเบฒเปเบเบทเบญเบเบเบตเปเปเบเปเบเบญเบเบเบญเบเบเบฐเบเบงเบเบเบฒเบเปเบกเปเบเบเบทเบเบชเปเบฒเบเบเบถเปเบ. เบชเปเบฒเบฅเบฑเบ OS, เปเบเบดเปเบเบเบทเบงเปเบฒเบกเบต 2 เบชเปเบฒเปเบเบปเบฒเบเบญเบเปเบเบฅเปเบเบฅเบกเบเบฝเบงเบเบฑเบเบเบตเปเปเบฎเบฑเบเบงเบฝเบเบขเบนเปเปเบเบฅเบฐเบเบปเบ, เปเบเบดเปเบเบเบฐเบญเบญเบเบเบฒเบเบเบฑเบเบเบฑเบ fork(). เบเบฐเบเบงเบเบเบฒเบเปเบเบฑเบเบเปเบญเบเบเบตเปเบชเปเบฒเบเบเบถเปเบเปเบซเบกเป (เบเปเบฝเบงเบเบฑเบเบเบฐเบเบงเบเบเบฒเบเบเปเปเปเบกเปเบเบตเปเบชเปเบฒเบเบกเบฑเบ) เบเบฐเบเปเปเบเบทเบเบเบฐเบเบดเบเบฑเบเบญเบตเบเบเปเปเปเบ, เปเบฅเบตเปเบกเบเบฒเบเบเบฑเบเบเบฑเบ main(). เบกเบฑเบเบเบงเบเบเบฐเปเบเบฑเบเบเบฒเบเบฅเบฐเบเบถเบเปเบเบดเบเบเบฐเบเบงเบเบเบฒเบเบเบญเบเปเบเบฑเบเบเปเบญเบเบเปเปเปเบกเปเบเบเบฒเบเบชเปเบฒเปเบเบปเบฒเบเบตเปเปเบเปเบเบญเบเบเบญเบเบเบฐเบเบงเบเบเบฒเบเบเบญเบเบเปเปเปเบกเปเปเบเบเบชเบฐเปเบเบฒเบฐ, เบกเบฑเบเบกเบตเบเบทเปเบเบเบตเปเบเบตเปเบขเบนเปเบเบญเบเบเบปเบเปเบญเบ, เบเบฐเบเบฝเบเบเบญเบเบเบปเบเปเบญเบ, เบเบปเบงเบเบตเปเบเบญเบเบเบปเบเปเบญเบเบเบฑเบเบเปเบฒเปเบเบฐเบเปเบฒเบเบตเปเบเบฐเบเบดเบเบฑเบเปเบเป, เปเบฅเบฐเบญเบทเปเบเป. เบเบฑเปเบเบเบฑเปเบ, เบกเบนเบเบเปเบฒเบเบตเปเบชเบปเปเบเบเบฑเบเบเบนเปเปเบเบเบญเบเบเบฑเบเบเบฑเบ fork() เบเบฐเปเบเบเบเปเบฒเบเบเบฑเบ. เปเบเบเบชเบฐเปเบเบฒเบฐ, เบเบฐเบเบงเบเบเบฒเบเบเปเปเปเบกเปเบเบฐเปเบเปเบฎเบฑเบเบเปเบฒ PID เบเบญเบเบเบฐเบเบงเบเบเบฒเบเปเบเบฑเบเปเบเบฑเบเบเบปเบเบเบญเบเปเบเบ, เปเบฅเบฐเปเบเบฑเบเบเบฐเปเบเปเบฎเบฑเบเบเปเบฒเปเบเบปเปเบฒเบเบฑเบ 0. เบเบฒเบเบเปเบฒเปเบเปเบฅเบฐเบซเบฑเบเบเบฑเบเบเบทเบเปเบซเบผเบปเปเบฒเบเบตเป, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบเบเบฐเบเบงเบเบเบฒเบเปเบฅเบฐเบเบฑเบเบเบฑเบเปเบซเปเบเบงเบเปเบเบปเบฒเปเบเปเบฅเบฐเบเบปเบเปเบฎเบฑเบเบงเบฝเบเบเบญเบเบเบปเบเปเบญเบ. . เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเบเบเบฒเบเบเบตเปเบเปเปเปเบเปเบเบทเบเบเปเบฒเบเบปเบเบขเปเบฒเบเปเบเบฑเปเบกเบเบงเบ. เบซเบผเบฑเบเบเบฒเบเปเบเปเบเบญเบญเบเปเบเบฑเบ 2 เบเบฐเบเบงเบเบเบฒเบ, OS เปเบฅเบตเปเบกเบเบดเบเบเบฒเบกเบเบงเบเบกเบฑเบ, เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเบเบฒเบเบงเบฒเบเปเบเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบญเบเบเบงเบเปเบเบปเบฒ. เบเปเบฒเบเบฐเบเบดเบเบฑเบเบขเบนเปเปเบเปเบเปเบเบเปเบเบตเบเบฝเบง, เบซเบเบถเปเบเปเบเบเบฐเบเบงเบเบเบฒเบ, เปเบเบเปเบฅเบฐเบเบตเบเบตเป, เบเปเปเปเบกเปเบเบฐเบชเบทเบเบเปเปเปเบฎเบฑเบเบงเบฝเบ, เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบฐเบเบงเบเบเบฒเบเปเบเบฑเบเบเบฐเปเบเปเบฎเบฑเบเบเบฒเบเบเบงเบเบเบธเบก. เปเบกเบทเปเบญเปเบฅเบตเปเบกเบเบปเปเบเปเบซเบกเป, เบชเบฐเบเบฒเบเบฐเบเบฒเบเบญเบฒเบเบเบฐเปเบเบเบเปเบฒเบเบเบฑเบ.
เปเบเบฅเปเบเปเบฒ()
เบเบดเบเบฒเบฅเบฐเบเบฒเปเบเบเบเบฒเบเบเปเปเปเบเบเบตเป. เปเบเปเบเบเบเบฒเบเบเบตเป, เปเบเบทเปเบญเบเบเบฒเบเบกเบตเบเบฒเบเปเบ เบฅเปเบเปเบฒ() เบเบฐเบเบงเบเบเบฒเบเบเบญเบเบเปเปเปเบกเปเบเบฐเบฅเปเบเปเบฒเปเบซเปเบเบฐเบเบงเบเบเบฒเบเปเบเบฑเบเบชเบณเปเบฅเบฑเบเบชเบฐเปเปเบต. เปเบเบเปเบฅเบฐเบเบตเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเปเบฎเบฑเบเบเปเปเบเบงเบฒเบกเบเบตเปเบเปเบฒเบเบปเบเบขเปเบฒเบเปเบเบฑเปเบกเบเบงเบเปเบเบซเบเปเบฒเบเป
exec() เปเบ
เบเบดเบเบฒเบฅเบฐเบเบฒเบชเบดเปเบเบเปเบฒเบเบฒเบ exec(). เบเบฒเบเปเบเบฅเบฐเบเบปเบเบเบตเปเปเบกเปเบเปเบเบฑเบเบเบฐเปเบซเบเบเปเบเปเบงเบฅเบฒเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบเบตเปเบเบฐเบเปเบฒเปเบเบตเบเบเบฒเบเปเบเบเบเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบซเบกเบปเบ. เปเบเบเบตเปเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเบซเบฒ execvp() เปเบเบทเปเบญเบเปเบฒเปเบเบตเบเบเบฒเบเปเบเบเบเบฒเบ wc เปเบเบดเปเบเปเบเบฑเบเปเบเบเบเบฒเบเบเบฑเบเบเปเบฒ. เบเบฐเปเบเบตเบเบซเบเบฑเบเบเบถเปเบเปเบกเบทเปเบญ exec() เบเบทเบเปเบญเบตเปเบ? เบเบฒเบเปเบเบเบตเปเปเบกเปเบเบเปเบฒเบเบเบทเปเบเบญเบเปเบเบฅเปเบเบตเปเบชเบฒเบกเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเปเปเบฅเบฐเบเบฒเบเบเบฒเบฅเบฒเบกเบดเปเบเบตเปเบเบฑเบเบเบฒเบเปเบเปเบเบฝเบ. เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบฅเบฐเบซเบฑเบเปเบฅเบฐเบเปเปเบกเบนเบเบเบปเบเบเบตเปเบเบฒเบเปเบเบฅเปเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบตเปเปเบเปเบเบทเบเปเบซเบฅเบเปเบฅเบฐเบเบฒเบเบชเปเบงเบเบเบญเบเบเบปเบเปเบญเบเบเบตเปเบกเบตเบฅเบฐเบซเบฑเบเบเบทเบเบเบฝเบเบเบฑเบ. เบเบทเปเบเบเบตเปเบเบงเบฒเบกเบเบปเบเบเปเบฒเบเบตเปเบเบฑเบเปเบซเบผเบทเบญ, เปเบเบฑเปเบ stack เปเบฅเบฐ heap, เปเบกเปเบ reinitialized. เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, OS เบเบฝเบเปเบเปเบเบฐเบเบดเบเบฑเบเปเบเบเบเบฒเบ, เบเปเบฒเบเบกเบฑเบเบเบธเบเบเบญเบเบเบฒเบเปเบเปเบเบฝเบ. เบเบฑเปเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเปเปเปเบเปเบชเปเบฒเบเบเบฐเบเบงเบเบเบฒเบเปเบซเบกเป, เบเบงเบเปเบฎเบปเบฒเบเบฝเบเปเบเปเบซเบฑเบเบเปเบฝเบเปเบเบเบเบฒเบเบเบตเปเบเปเบฒเบฅเบฑเบเปเบฅเปเบเบขเบนเปเปเบเปเบเบเบเบฒเบเบญเบทเปเบ. เบซเบผเบฑเบโเบเบฒเบโเบเบฒเบโเบเบฐโเบเบดโเบเบฑเบ exec() call เปเบ descendant, เบกเบฑเบโเบเบฐโเบเบปเบโเบงเปเบฒโเปเบเบโเบเบฒเบโเบเบปเปเบโเบชเบฐโเบเบฑเบโเบเปเปโเปเบเปโเบเปเบฒโเปเบเบตเบโเบเบฒเบโเบเบฑเบโเบซเบกเบปเบ.
เบญเบฒเบเบฒเบเปเบเบเบเปเบญเบเปเบเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบเบตเปเปเบกเปเบเปเบเบฑเบเปเบฅเบทเปเบญเบเบเบปเบเบเบฐเบเบดเบขเปเบฒเบเบชเบปเบกเบเบนเบเบชเปเบฒเบฅเบฑเบ Unix shell, เปเบฅเบฐเบญเบฐเบเบธเบเบฒเบเปเบซเปเปเบเบฐเบเบฑเปเบเบเบฐเบเบดเบเบฑเบเบฅเบฐเบซเบฑเบเบซเบผเบฑเบเบเบฒเบเบเบฒเบเปเบ เบชเปเบญเบก (), เปเบเปเบเปเบญเบเบเบฒเบเปเบ exec(). เบเบปเบงเบขเปเบฒเบเบเบญเบเบฅเบฐเบซเบฑเบเบเบฑเปเบเบเปเบฒเบงเบเบฐเปเบเบฑเบเบเบฒเบเบเบฑเบเบชเบฐเบเบฒเบเปเบงเบเบฅเปเบญเบกเบเบญเบเปเบเบฐเบเบฑเบเบเบงเบฒเบกเบเปเบญเบเบเบฒเบเบเบญเบเปเบเบเบเบฒเบเบเบตเปเบเบทเบเปเบเบตเบเบเบปเบง, เบเปเบญเบเบเบตเปเบเบฐเปเบเบตเบเบเบปเบง.
Shell - เบเบฝเบโเปเบเปโเปเบเบโเบเบฒเบโเบเบนเปโเปเบเปโ. เบเบฒเบเบชเบฐเปเบเบเปเบซเปเบเปเบฒเบเปเบซเบฑเบเปเบชเบฑเปเบเปเบเบทเปเบญเปเบเบตเบเปเบฅเบฐเบฅเปเบเปเบฒเปเบซเปเบเปเบฒเบเบเบฝเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบเบกเบฑเบ. เปเบเบเปเบฅเบฐเบเบตเบซเบผเบฒเบเบเบตเปเบชเบธเบ, เบเปเบฒเบเปเบฒเบเบเบฝเบเบเบทเปเบเบญเบเปเบเบฅเปเบเบฅเบกเบขเบนเปเบเบตเปเบเบฑเปเบ, shell เบเบฐเบเบญเบเบซเบฒเบชเบฐเบเบฒเบเบเบตเปเบเบญเบเบกเบฑเบ, เปเบเบซเบฒเบงเบดเบเบตเบเบฒเบ fork(), เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบเบซเบฒเบเบฒเบเบเบฐเปเบเบเบเบญเบ exec() เปเบเบทเปเบญเบชเปเบฒเบเบเบฐเบเบงเบเบเบฒเบเปเบซเบกเปเปเบฅเบฐเบฅเปเบเปเบฒเปเบซเปเบกเบฑเบเบชเปเบฒเปเบฅเบฑเบเปเบเบเปเบเป a. wait() เปเบ. เปเบกเบทเปเบญเบเบฐเบเบงเบเบเบฒเบเปเบเบฑเบเบญเบญเบเบเบฒเบ, เปเบเบฐเบเบฐเบเบฑเบเบเบทเบเบกเบฒเบเบฒเบเบเบฒเบเปเบเบซเบฒ wait() เปเบฅเบฐเบเบดเบกเบเบฒเบเปเบเบทเบญเบเบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบเปเบฅเบฐเบฅเปเบเปเบฒเบเปเบฒเบชเบฑเปเบเบเปเปเปเบเบเบฐเบเบทเบเบเปเบญเบ.
เบเบฒเบเปเบเปเบเบเบฑเบ fork() & exec() เบญเบฐเบเบธเบเบฒเบเปเบซเป shell เปเบฎเบฑเบเบชเบดเปเบเบเปเปเปเบเบเบตเป, เบเบปเบงเบขเปเบฒเบ:
เปเบเบฅเป wc > new_file.
เปเบเบเบปเบงเบขเปเบฒเบเบเบตเป, เบเบปเบเบเบฐเบฅเบดเบเบเบญเบเปเบเบเบเบฒเบ wc เบเบทเบเปเบญเบเปเบเบซเบฒเปเบเบฅเป. เบงเบดเบเบตเบเบตเปเบซเบญเบเบเบฑเบเบฅเบธเปเบเปเบเบตเปเปเบกเปเบเบเปเบญเบเบเปเบฒเบเบเปเบฒเบเบเบฒเบ - เปเบเบเบเบฒเบเบชเปเบฒเบเบเบฐเบเบงเบเบเบฒเบเปเบเบฑเบเบเปเบญเบเบเปเบญเบเบเบตเปเบเบฐเปเบเบซเบฒ exec(), เปเบเบฐเบเบดเบเบเบปเบเบเบฐเบฅเบดเบเบกเบฒเบเบเบฐเบเบฒเบเปเบฅเบฐเปเบเบตเบเปเบเบฅเป new_file, เบเบฑเปเบเบเบฑเปเบ, เบเบปเบเบเบฐเบฅเบดเบเบเบฑเบเบซเบกเบปเบเบเบฒเบเปเบเบเบเบฒเบเปเบฅเปเบเบเปเปเปเบ wc เบเบฐเบเบทเบเบเปเบฝเบเปเบชเบฑเปเบเบเบฒเบเปเบเบซเบฒเปเบเบฅเปเปเบเบเบเบตเปเบเบฐเปเบเบฑเบเบซเบเปเบฒเบเป.
เบเปเป Unix เปเบเปเบเบทเบเบเบฐเบเบดเบเบฑเบเปเบเบฅเบฑเบเบชเบฐเบเบฐเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบ, เบกเบตเบเบงเบฒเบกเปเบเบเบเปเบฒเบเบเบฑเบเบเบตเปเบเบงเบเปเบเบปเบฒเปเบเปเบเปเป () เปเบ. เปเบเบเปเบฅเบฐเบเบตเบเบตเป, เบเบฐเปเบชเบเบปเบเบเบฐเบฅเบดเบเบเบญเบเบเบฐเบเบงเบเบเบฒเบเบเบฐเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเปเบเบงเบเปเปเบเบตเปเบขเบนเปเปเบ kernel, เปเบเบดเปเบเบเบฐเปเบชเบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบเบเบญเบเบเบฐเบเบงเบเบเบฒเบเบญเบทเปเบเบเบฐเบเบทเบเปเบเบทเปเบญเบกเบเปเป.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com