ααΆαααααΆαα’αααΈααααααααααααα·ααααα·ααΆα
α αα α! αααα»αα
ααααΆαααααΆαααα
α·ααααα»αααΆααααααα’αααααΌααααααΈααα’ααααα-ααΆαααααααααα’αααααα·αααααα½αα±ααα
αΆααα’αΆαααααααα½ααα
αααα»ααααα·ααααααααα»α - OSTEP α αααααΆααααααα·ααΆααααΆαααΆααααΈααααα
α’αααΈααΆαααΆαααααααααααααααααα·ααααα·ααΆαααΌα
ααΌααΈα αααααΊααααΎααΆαααΆαα½αααααΎαααΆα αααααα·ααΈαααααααααααααα α’αααα
αα
αΆα αα·ααααΆαααΆαα»ααααααααααΆααααααααααααααααΎαααΆααααααααααααα·ααααα·ααΆαααααΎαα α’αααα’αΆα
ααΎαααΎαααΎααααααααΆααααΆααα’αααα
ααΈααα
ααΆαααΆααααααΈααα·αααααααΎαααααΆααααααα’αΆα ααααΆααα ααΈαααα
ααΎα ααΎα ααΆαααααααααα½αααααΆαααααα½ααααααααα»α
αααααααααααααα
αααααααΈ 1: ααΆαααααΆα αααααααΈ 2α α’ααΌααΈα ααααΎαααΆα αααααααΈ 3α ααΆαααααΆαα’αααΈααααΎαααΆα API
α’αααααα’αΆα
αα·αα·αααααΎαααΆααααααααααα»ααα
αααα·α! ααΆααααααααα·ααααααααααΆααααΆαααααααααα! ααΎα
API ααααΎαααΆα
ααΌααααα‘ααααΎαα§ααΆα αααααααΆααααααΎαααααΎαααΆααα αααα»αααααααααααΌααΈαα ααΆααΎαα‘αΎαααΆααααααΆαα α ααααααααααΈα αα () ΠΈ exec().
α α fork ()
αα·α
αΆαααΆαααααα·ααΈααααααααΎαααΆαα α
fork() α ααααααααααΆαααααα·ααααα·ααααααΆααΉαααΆαααΌα
ααΆααααααα
ααααΌαααΎααααα
αΌααα»αααΆα main() α αΎαααααα»αααααααα’αααααα
α’ααααααα αααααΆααααΆααααααα’ααααααααΆαααααΎαααΆαααααα
αααα»αααΎαααααΌαααΆαααα α
ααΆ PID α¬α§ααααααααααα’ααααααααΆαααααΎαααΆαα α§ααααααααααα’ααααααααΆααααααααΌαααΆαααααΎαα
αααα»α UNIX ααΎααααΈααααα
ααΎααααΎαααΆααα½αα ααΆααααααααΆαααααΆααααΉαα α
fork()α αα
α
ααα»α
ααα α
αααΆααα
ααααααααΎααααα·αααααΆααααααααΎαααΆαααααΌαααΆααααααΎαα‘αΎαα αααααΆαα OS ααΆα αΆααααΌα
ααΆααΆα 2 α
αααΆααα
αααααααααααα·ααΈααΌα
ααααΆααααααα»αααααΎαααΆααα
ααΎαααααααα ααααα
αααα»ααααααΉαα
ααααΈαα»αααΆα fork()α ααααΎαααΆαααΌααααααΆααααααΎαααααΈ (ααΆααααααΉαααααΎαααΆαααααααααααΎαααΆ) ααΉααα·αααααΌαααΆαααααα·ααααα·ααααα αααα
αΆααααααΎαααΈαα»αααΆα main()α ααΆαα½αααααααΌαααΆαα
αα
αΆααααα»αα
α·αααααΆααααΎαααΆαααΌααα·ααααααΆα
αααΆααα
αααααα·αααααΆααααααααΎαααΆααα ααΆαα·αααααΆααΆαααααααα’αΆααααααΆαααααΆαααααα½α αααααΈαααααααααααΆ ααααα·α
ααααΆαααααα½αααααααΆα
ααααααΆαααααΆααααα’αΆα
ααααα·ααααα·ααΆα αα·αα’αααΈαααααααααα ααΌα
αααααααααααααααααααα
α’αααα α
αα»αααΆα fork() ααΉααα»αααααΆα ααΆαα·ααα ααααΎαααΆαααααΉαααα½αααΆαααααα PID ααααααΎαααΆααα»ααΆαααΆααΆααααα‘αααααα·α α αΎααα»ααΆαααΉαααα½αααΆααααααααααΎααΉα 0α αααααααΎαααααΌααααα‘ααααΆααααα αααααΆααααα’αααα’αΆα
αααααααααΎαααΆα αα·αααααααα½αααααααΆαααα±ααααααΎααΆαααΆαααααΆαααααα½αααααααΆα . αααααΆαααΆαααΆαααααααΆαααααα·ααααα·αααααααα·ααΈααααα·αααααΌαααΆαααααααααΆαααΉααααΉαααα αααααΆααααΈαααα
ααααΆ 2 ααααΎαααΆα OS α
αΆααααααΎααααα½ααα·αα·ααααα½αααΆ ααααΌα
ααΆαααα
ααααααΆαααΆαααΆααααααα½αααα ααααα·αααΎααααΎαααΆαααΎααααααααααααΎαααΆα single-core ααααΎαααΆααα½ααααα»αα
ααααααααΎαααΆα αααα»αααααΈααα ααααΉαααααααααΎαααΆα α αΎααααααΆααααααααΎαααΆααα»ααΆαααΉαααα½αααΆαααΆααααααααααα αα
αααα
αΆααααααΎαα‘αΎααα·α ααααΆαααΆαα’αΆα
αα»αααααΆα
αααα αΆαααΆαα α ααΌαααααα ()
αα·α
αΆαααΆαααααα·ααΈααΆααααααα αα
αααα»ααααααα·ααΈααααααααΆαααααΆαααααααΆαααααΆαα α
αα½αα αααα
αΆα () ααααΎαααΆαααααΉαααααααααα
αΆαα±ααααααΎαααΆααα»ααΆααααα
ααα αααα»αααααΈααα ααΎαααΉαααα½αααΆαααααααα’ααααααααααΆαααααααααΆαααΉααααΉααα
ααΎα’αααααα
exec() α α
αα·α
αΆαααΆαααα αΆααααα exec(). ααΆαα α
αααααααααααααΆααααααααααα
αααααΎαα
ααααααΎαααΆααααααα·ααΈαα»αααααΆααΆαααααα»αα αα
ααΈαααααΎαααΉαα α
execvp() ααΎααααΈααααΎαααΆααααααα·ααΈ wc αααααΆαααααα·ααΈααΆααααΆαααα ααΎααΆαα’αααΈααΎαα‘αΎααα
αααααα exec() ααααΌαααΆαααα α
ααΆ? ααΆαα α
ααΌααααααααααααΌαααΆαααααααΆαααααααα―αααΆααααα’αΆα
ααααα·ααααα·ααΆα αα·ααααΆαααΆαααααααα½αα
ααα½αααΆα’αΆαα»αααααα αααααΆααααΈαααααΌα αα·ααα·αααααααα·αα·ααααααΈα―αααΆααααα’αΆα
ααααα·ααααα·ααΆααααααααΌαααΆααααα»α α αΎααααααααααΆαααααα½αααααααΆααΆαα½αααΉαααΌαααααΌαααΆααααααααΆααααΈααΎα αααααα’αααα
αα
αΆαααααα
αααααα ααΌα
ααΆααα αα·αα ααΆααααΌαααΆαα
αΆααααααΎαα‘αΎααα·αα αααααΆααααΈααα OS ααααΎαααΆααααααα·ααΈαααααααααΆααααΆααααα»αααα’αΆαα»αααααα ααΌα
αααα ααΎαβαα·αβααΆαβαααααΎαβααααΎαβααΆαβααααΈβαα ααΎαβααααΆααβααβαααααααβαααααα·ααΈβαααβαααα»αβααααΎαααΆαβαα
βααΆβαααααα·ααΈβαααβαααα»αβααααΎαααΆαβαααααβαααα αααααΆααααΈααααΎαααΆα exec() call αα
αααα»α descendant ααΆα αΆααααΌα
ααΆαααααα·ααΈααΎααα·αααααΎαααΆαααΆαααααααα
ααΆααααα»αααααΆαααααΆαα αΆααααααΎααααααΊααΆααΏαααααααΆααΆαααααα»ααααααΆαααααααΌααΈα α αΎαα’αα»ααααΆαα±ααααααααααααα·ααααα·ααΌααααααΆααααΈααΆαα α ααΌααααα αα ()ααα»αααααα»ααααα α exec(). α§ααΆα αααααααΌαααααααααΉαααΆαααΆααααααααΌαααα·ααΆααΆαααααα ααΉααααααΌαααΆααααααααα·ααΈααααααα»αααααΎαααΆα αα»ααααα αΆααααααΎαααΆα
ααα - ααααΆααααααΆαααααα·ααΈα’αααααααΎααααΆααα ααΆααααα αΆαα’αααααΌααααααΆααα’ααααΎα α αΎααααα αΆαα’ααααααααα’αααΈαα½ααα αααα»ααααα αααα»αααααΈααΆαα αααΎα ααααα·αααΎα’ααααααααααααααααααα·ααΈαα ααΈααα αααααΉαααααΎαααΈααΆααααααααΆ α α αα·ααΈααΆααααα fork() α αΎααααααΆααααα α αααααααα½αα ααα½ααα exec() ααΎααααΈαααααΎαααααΎαααΆαααααΈ α αΎααααα αΆαα±ααααΆαααα αααααααααΎ αααα αΆα () α α α αα ααααααααααΎαααΆαααΌαα αα αααααΉααααααααααα·αααΈααΆαα α wait() α αΎαααααα»ααααααα’αααααα αΌαααααααα α αΎααααα αΆαααΆααααα αΌαααΆααααααααΆαααααΆααα
ααΆαααααα fork() & exec() α’αα»ααααΆαα±αααααααααΎαα·α
αα
ααΆαααΆαααααα α§ααΆα αααα
α―αααΆα wc > new_file α
αααα»αα§ααΆα αααααα αααααααααααααα·ααΈ wc ααααΌαααΆααααααΌααααααα α―αααΆααα½αα αα·ααΈαααααααααααα ααΆααααααΊααΆααααααΆαα - ααααααααΎαααααΎαααΆααα»ααΆααα»ααααα α ααΌααααα exec()ααααα·ααααααααααααααΆα α αΎαααΎαα―αααΆα α―αααΆαααααΈααΌα αααα ααααααααΆααα’ααααΈαααααα·ααΈααααααα»αααααΎαααΆαααααααααα wc ααΉαααααΌαααΆααααααΌααααααα α―αααΆααααα½αα±ααα’ααααααα
αααααααΌααΈα ααααΌαααΆαα’αα»ααααααΆαααααααααααααααΆααΆαα½αααΉαααΆααα»αααααΆααααα½αααααααΎ pipe() call α αααα»αααααΈααα ααααααΈαααααααααααααΎαααΆαααΉαααααΌαααΆαααααΆαααα
αα½αααααααααααΆαααΈααΆαααα
ααΊααα αααα
αααααααα
αΌαααααααΎαααΆαααααααααααΉαααααΌαααΆαααααΆααα
ααααα: www.habr.com