แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒ˜: แƒกแƒแƒ›แƒ˜ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒชแƒแƒšแƒ˜. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 3: แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก API (แƒ—แƒแƒ แƒ’แƒ›แƒแƒœแƒ˜)

แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒ•แƒแƒšแƒ˜

แƒฐแƒ”แƒ˜ แƒฐแƒแƒ‘แƒ ! แƒ›แƒ˜แƒœแƒ“แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒงแƒฃแƒ แƒแƒ“แƒฆแƒ”แƒ‘แƒแƒก แƒ’แƒแƒ•แƒแƒ›แƒแƒฎแƒ•แƒ˜แƒšแƒ แƒฉแƒ”แƒ›แƒ˜ แƒแƒ–แƒ แƒ˜แƒ— แƒ”แƒ แƒ—แƒ˜ แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ แƒšแƒ˜แƒขแƒ”แƒ แƒแƒขแƒฃแƒ แƒ˜แƒก - OSTEP-แƒ˜แƒก แƒกแƒขแƒแƒขแƒ˜แƒ-แƒ—แƒแƒ แƒ’แƒ›แƒแƒœแƒ˜แƒก แƒกแƒ”แƒ แƒ˜แƒ. แƒ”แƒก แƒ›แƒแƒกแƒแƒšแƒ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒฆแƒ แƒ›แƒแƒ“ แƒ’แƒแƒœแƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒก unix-แƒ˜แƒก แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜ แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒก, แƒ™แƒ”แƒ แƒซแƒแƒ“, แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒ—แƒแƒœ, แƒกแƒฎแƒ•แƒแƒ“แƒแƒกแƒฎแƒ•แƒ แƒ’แƒ แƒแƒคแƒ˜แƒ™แƒ”แƒ‘แƒ—แƒแƒœ, แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒแƒกแƒ—แƒแƒœ แƒ“แƒ แƒกแƒฎแƒ•แƒ แƒ›แƒกแƒ’แƒแƒ•แƒก แƒ™แƒแƒ›แƒžแƒแƒœแƒ”แƒœแƒขแƒ”แƒ‘แƒ—แƒแƒœ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒฅแƒ›แƒœแƒ˜แƒแƒœ แƒ—แƒแƒœแƒแƒ›แƒ”แƒ“แƒ แƒแƒ•แƒ” OS-แƒก. แƒงแƒ•แƒ”แƒšแƒ แƒ›แƒแƒกแƒแƒšแƒ˜แƒก แƒแƒ แƒ˜แƒ’แƒ˜แƒœแƒแƒšแƒ˜ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒœแƒแƒฎแƒแƒ— แƒแƒฅ แƒแƒฅ. แƒ’แƒ—แƒฎแƒแƒ•แƒ— แƒ’แƒแƒ˜แƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒแƒ—, แƒ แƒแƒ› แƒ—แƒแƒ แƒ’แƒ›แƒแƒœแƒ˜ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒแƒ แƒแƒžแƒ แƒแƒคแƒ”แƒกแƒ˜แƒแƒœแƒแƒšแƒฃแƒ แƒแƒ“ (แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ—แƒแƒ•แƒ˜แƒกแƒฃแƒคแƒšแƒแƒ“), แƒ›แƒแƒ’แƒ แƒแƒ› แƒ˜แƒ›แƒ”แƒ“แƒ˜แƒ แƒจแƒ”แƒ•แƒ˜แƒœแƒแƒ แƒฉแƒฃแƒœแƒ” แƒ–แƒแƒ’แƒแƒ“แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ.

แƒแƒ› แƒ—แƒ”แƒ›แƒแƒ–แƒ” แƒšแƒแƒ‘แƒแƒ แƒแƒขแƒแƒ แƒ˜แƒฃแƒšแƒ˜ แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ˜แƒฎแƒ˜แƒšแƒแƒ— แƒแƒฅ:

แƒกแƒฎแƒ•แƒ แƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒ˜:

แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒœแƒแƒฎแƒแƒ— แƒฉแƒ”แƒ›แƒ˜ แƒแƒ แƒฎแƒ˜ แƒแƒฅ แƒขแƒ”แƒšแƒ”แƒ’แƒ แƒแƒ›แƒ =)

แƒ’แƒแƒœแƒ’แƒแƒจแƒ˜! แƒแƒ› แƒšแƒ”แƒฅแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒแƒ แƒ˜แƒก แƒšแƒแƒ‘แƒแƒ แƒแƒขแƒแƒ แƒ˜แƒ! แƒจแƒ”แƒฎแƒ”แƒ“แƒ” github

แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก API

แƒ›แƒแƒ“แƒ˜แƒ— แƒจแƒ”แƒ•แƒฎแƒ”แƒ“แƒแƒ— UNIX แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒจแƒ˜ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒก. แƒ”แƒก แƒฎแƒ“แƒ”แƒ‘แƒ แƒแƒ แƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒฃแƒ แƒ˜ แƒ–แƒแƒ แƒ˜แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒ˜แƒ— แƒฉแƒแƒœแƒ’แƒแƒšแƒ˜ () ะธ exec ().

Call fork()

แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒ˜: แƒกแƒแƒ›แƒ˜ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒชแƒแƒšแƒ˜. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 3: แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก API (แƒ—แƒแƒ แƒ’แƒ›แƒแƒœแƒ˜)

แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ— แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒฎแƒ“แƒ”แƒœแƒก fork() แƒ–แƒแƒ แƒก. แƒ›แƒ˜แƒกแƒ˜ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜.

แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒ˜: แƒกแƒแƒ›แƒ˜ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒชแƒแƒšแƒ˜. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 3: แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก API (แƒ—แƒแƒ แƒ’แƒ›แƒแƒœแƒ˜)

แƒฃแƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ”แƒก แƒงแƒแƒ•แƒšแƒ˜แƒกแƒ, แƒจแƒ”แƒ•แƒ“แƒ˜แƒ•แƒแƒ แƒ— main() แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒก แƒ“แƒ แƒ•แƒ‘แƒ”แƒญแƒ“แƒแƒ•แƒ— แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒก แƒ”แƒ™แƒ แƒแƒœแƒ–แƒ”. แƒฎแƒแƒ–แƒ˜ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒแƒ แƒก, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒแƒ แƒ˜แƒ’แƒ˜แƒœแƒแƒšแƒจแƒ˜ แƒ”แƒฌแƒแƒ“แƒ”แƒ‘แƒ PID แƒแƒœ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒแƒ แƒ˜. แƒ”แƒก แƒ˜แƒ“แƒ”แƒœแƒขแƒ˜แƒคแƒ˜แƒ™แƒแƒขแƒแƒ แƒ˜ แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ UNIX-แƒจแƒ˜ แƒžแƒ แƒแƒชแƒ”แƒกแƒ–แƒ” แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ แƒ’แƒแƒ›แƒแƒ˜แƒซแƒแƒฎแƒ”แƒ‘แƒก fork(). แƒแƒ› แƒ”แƒขแƒแƒžแƒ–แƒ” แƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒ—แƒ˜แƒ—แƒฅแƒ›แƒ˜แƒก แƒ–แƒฃแƒกแƒขแƒ˜ แƒแƒกแƒšแƒ˜. OS-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒแƒœแƒก, แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒแƒ–แƒ” แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ”แƒ แƒ—แƒ˜ แƒ“แƒ แƒ˜แƒ›แƒแƒ•แƒ” แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒก 2 แƒแƒกแƒšแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ—แƒแƒ•แƒ˜แƒก แƒ›แƒฎแƒ แƒ˜แƒ• แƒ’แƒแƒ›แƒแƒ•แƒ fork() แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒ“แƒแƒœ. แƒแƒฎแƒšแƒแƒ“ แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜ แƒจแƒ•แƒ˜แƒšแƒ˜ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ (แƒ›แƒจแƒแƒ‘แƒšแƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ—แƒแƒœ แƒ›แƒ˜แƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒแƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ›แƒแƒช แƒจแƒ”แƒฅแƒ›แƒœแƒ แƒ˜แƒ’แƒ˜) แƒแƒฆแƒแƒ  แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ“แƒ”แƒ‘แƒ, แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒฃแƒšแƒ˜ main() แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒ“แƒแƒœ. แƒฃแƒœแƒ“แƒ แƒ’แƒ•แƒแƒฎแƒกแƒแƒ•แƒ“แƒ”แƒก, แƒ แƒแƒ› แƒจแƒ•แƒ˜แƒšแƒ˜ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ›แƒจแƒแƒ‘แƒ”แƒšแƒ˜ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒ–แƒฃแƒกแƒขแƒ˜ แƒแƒกแƒšแƒ˜; แƒ™แƒ”แƒ แƒซแƒแƒ“, แƒ›แƒแƒก แƒแƒฅแƒ•แƒก แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜แƒก แƒกแƒ˜แƒ•แƒ แƒชแƒ”, แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒ”แƒ‘แƒ˜, แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒ“แƒ˜ แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ“แƒ แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜. แƒแƒ›แƒ แƒ˜แƒ’แƒแƒ“, fork() แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ›แƒซแƒแƒฎแƒ”แƒ‘แƒ”แƒšแƒ–แƒ” แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ. แƒ™แƒ”แƒ แƒซแƒแƒ“, แƒ›แƒจแƒแƒ‘แƒ”แƒšแƒ˜ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ‘แƒก แƒ‘แƒแƒ•แƒจแƒ•แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก PID แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒแƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ—, แƒ“แƒ แƒ‘แƒแƒ•แƒจแƒ•แƒ˜ แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ‘แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒแƒก 0-แƒ˜แƒก แƒขแƒแƒšแƒ˜. แƒแƒ› แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒ“แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒ—แƒฅแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒœแƒแƒกแƒฎแƒ•แƒแƒ•แƒแƒ— แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒ˜ แƒ“แƒ แƒแƒ˜แƒซแƒฃแƒšแƒแƒ— แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ›แƒแƒ—แƒ’แƒแƒœแƒ˜ แƒจแƒ”แƒแƒกแƒ แƒฃแƒšแƒแƒก แƒกแƒแƒ™แƒฃแƒ—แƒแƒ แƒ˜ แƒกแƒแƒ›แƒฃแƒจแƒแƒ. . แƒ—แƒฃแƒ›แƒชแƒ, แƒแƒ› แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ›แƒ™แƒแƒชแƒ แƒแƒ“ แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒฃแƒšแƒ˜. 2 แƒžแƒ แƒแƒชแƒ”แƒกแƒแƒ“ แƒ“แƒแƒงแƒแƒคแƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ OS แƒ˜แƒฌแƒงแƒ”แƒ‘แƒก แƒ›แƒแƒ— แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒœแƒ’แƒก, แƒแƒกแƒ”แƒ•แƒ” แƒ›แƒแƒ—แƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒ“แƒแƒ’แƒ”แƒ’แƒ›แƒ•แƒแƒก. แƒ—แƒฃ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ”แƒ แƒ—แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒแƒœ แƒžแƒ แƒแƒชแƒ”แƒกแƒแƒ แƒ–แƒ”, แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜, แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒ›แƒจแƒแƒ‘แƒ”แƒšแƒ˜, แƒ’แƒแƒแƒ’แƒ แƒซแƒ”แƒšแƒ”แƒ‘แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒแƒก แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ‘แƒแƒ•แƒจแƒ•แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ‘แƒก แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒก. แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒกแƒแƒก, แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒงแƒแƒก.

แƒ–แƒแƒ แƒ˜แƒก แƒ›แƒแƒšแƒแƒ“แƒ˜แƒœแƒ˜ ()

แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒ˜: แƒกแƒแƒ›แƒ˜ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒชแƒแƒšแƒ˜. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 3: แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก API (แƒ—แƒแƒ แƒ’แƒ›แƒแƒœแƒ˜)

แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ— แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ. แƒแƒ› แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒแƒจแƒ˜, แƒ–แƒแƒ แƒ˜แƒก แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒ แƒ“แƒแƒ”แƒšแƒแƒ“แƒ” () แƒ›แƒจแƒแƒ‘แƒ”แƒšแƒ˜ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก แƒ”แƒšแƒแƒ“แƒ”แƒ‘แƒ แƒ‘แƒแƒ•แƒจแƒ•แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒก. แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒ”แƒ™แƒ แƒแƒœแƒ–แƒ” แƒ›แƒ˜แƒ•แƒ˜แƒฆแƒ”แƒ‘แƒ— แƒ›แƒ™แƒแƒชแƒ แƒแƒ“ แƒ’แƒแƒœแƒกแƒแƒ–แƒฆแƒ•แƒ แƒฃแƒš แƒขแƒ”แƒฅแƒกแƒขแƒก

แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒ˜: แƒกแƒแƒ›แƒ˜ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒชแƒแƒšแƒ˜. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 3: แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก API (แƒ—แƒแƒ แƒ’แƒ›แƒแƒœแƒ˜)

exec() แƒ–แƒแƒ แƒ˜

แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒ˜: แƒกแƒแƒ›แƒ˜ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒชแƒแƒšแƒ˜. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 3: แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก API (แƒ—แƒแƒ แƒ’แƒ›แƒแƒœแƒ˜)

แƒ’แƒแƒœแƒ˜แƒฎแƒ˜แƒšแƒ”แƒ— แƒ’แƒแƒ›แƒแƒฌแƒ•แƒ”แƒ•แƒ exec (). แƒ”แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒฃแƒ แƒ˜ แƒ–แƒแƒ แƒ˜ แƒ’แƒแƒ›แƒแƒ“แƒ’แƒ”แƒ‘แƒ แƒ›แƒแƒจแƒ˜แƒœ, แƒ แƒแƒชแƒ แƒ’แƒ•แƒกแƒฃแƒ แƒก แƒกแƒ แƒฃแƒšแƒ˜แƒแƒ“ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ. แƒแƒฅ แƒฉแƒ•แƒ”แƒœ แƒ“แƒแƒ•แƒฃแƒซแƒแƒฎแƒ”แƒ‘แƒ— execvp () wc แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒก แƒ’แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒแƒ“, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ แƒ˜แƒก แƒกแƒ˜แƒขแƒงแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ›แƒ—แƒ•แƒšแƒ”แƒšแƒ˜ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ. แƒ แƒ แƒฎแƒ“แƒ”แƒ‘แƒ exec()-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒซแƒแƒฎแƒ”แƒ‘แƒ˜แƒกแƒแƒก? แƒแƒ› แƒ–แƒแƒ แƒก แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒแƒ“ แƒ’แƒแƒ“แƒแƒ”แƒชแƒ”แƒ›แƒ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒ“แƒ˜ แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜ แƒ“แƒ แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ˜. แƒ แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒแƒช แƒ™แƒแƒ“แƒ˜ แƒ“แƒ แƒกแƒขแƒแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒแƒ› แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒ“แƒ˜ แƒคแƒแƒ˜แƒšแƒ˜แƒ“แƒแƒœ แƒ˜แƒขแƒ•แƒ˜แƒ แƒ—แƒ”แƒ‘แƒ แƒ“แƒ แƒ›แƒ˜แƒกแƒ˜ แƒกแƒ”แƒ’แƒ›แƒ”แƒœแƒขแƒ˜ แƒ™แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ“แƒแƒ˜แƒฌแƒ”แƒ แƒ”แƒ‘แƒ. แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ แƒฉแƒ”แƒœแƒ˜แƒšแƒ˜ แƒแƒ แƒ”แƒ”แƒ‘แƒ˜, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ แƒกแƒขแƒ”แƒ™แƒ˜ แƒ“แƒ แƒ’แƒ แƒแƒ•แƒ, แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ แƒ˜แƒœแƒ˜แƒชแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ. แƒ แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒแƒช OS แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒก แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒแƒก, แƒ’แƒแƒ“แƒแƒกแƒชแƒ”แƒ›แƒก แƒ›แƒแƒก แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—แƒแƒ‘แƒšแƒ˜แƒแƒ‘แƒแƒก. แƒแƒกแƒ” แƒ แƒแƒ›, แƒฉแƒ•แƒ”แƒœ แƒแƒ  แƒจแƒ”แƒ•แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒแƒฎแƒแƒšแƒ˜ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜, แƒฉแƒ•แƒ”แƒœ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒงแƒ•แƒแƒœแƒ”แƒ— แƒแƒ›แƒŸแƒแƒ›แƒแƒ“ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ แƒกแƒฎแƒ•แƒ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒš แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒแƒ“. Exec() แƒ–แƒแƒ แƒ˜แƒก แƒจแƒ—แƒแƒ›แƒแƒ›แƒแƒ•แƒšแƒจแƒ˜ แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ แƒแƒ’แƒแƒ แƒช แƒฉแƒแƒœแƒก, แƒแƒ แƒ˜แƒ’แƒ˜แƒœแƒแƒšแƒฃแƒ แƒ˜ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ แƒกแƒแƒ”แƒ แƒ—แƒแƒ“ แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ“แƒ.

แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ”แƒก แƒ’แƒแƒ แƒ—แƒฃแƒšแƒ”แƒ‘แƒ แƒกแƒ แƒฃแƒšแƒ˜แƒแƒ“ แƒœแƒแƒ แƒ›แƒแƒšแƒฃแƒ แƒ˜แƒ Unix แƒญแƒฃแƒ แƒ•แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒแƒซแƒšแƒ”แƒ•แƒก แƒแƒ› แƒ’แƒแƒ แƒกแƒก แƒจแƒ”แƒแƒกแƒ แƒฃแƒšแƒแƒก แƒ™แƒแƒ“แƒ˜ แƒ“แƒแƒ แƒ”แƒ™แƒ•แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’. แƒฉแƒแƒœแƒ’แƒแƒšแƒ˜ (), แƒ›แƒแƒ’แƒ แƒแƒ› แƒ–แƒแƒ แƒ˜แƒก แƒฌแƒ˜แƒœ exec (). แƒแƒกแƒ”แƒ—แƒ˜ แƒ™แƒแƒ“แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ’แƒแƒ แƒกแƒ˜แƒก แƒ’แƒแƒ แƒ”แƒ›แƒแƒก แƒ›แƒแƒ แƒ’แƒ”แƒ‘แƒ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒก แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒ”แƒ‘แƒ–แƒ”, แƒ›แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒ›แƒ“แƒ”.

แƒจแƒ”แƒšแƒ˜ - แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ›แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒšแƒ˜แƒก แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ. แƒ˜แƒก แƒ’แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ— แƒ›แƒแƒกแƒแƒฌแƒ•แƒ”แƒ•แƒ˜แƒก แƒฎแƒแƒ–แƒก แƒ“แƒ แƒ”แƒšแƒแƒ“แƒ”แƒ‘แƒ, แƒ แƒแƒ“แƒ˜แƒก แƒ“แƒแƒฌแƒ”แƒ แƒ— แƒ›แƒแƒกแƒจแƒ˜ แƒ แƒแƒฆแƒแƒชแƒแƒก. แƒฃแƒ›แƒ”แƒขแƒ”แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ—แƒฃ แƒ˜แƒฅ แƒ“แƒแƒฌแƒ”แƒ แƒ— แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒก, แƒญแƒฃแƒ แƒ•แƒ˜ แƒ˜แƒžแƒแƒ•แƒ˜แƒก แƒ›แƒ˜แƒก แƒ›แƒ“แƒ”แƒ‘แƒแƒ แƒ”แƒแƒ‘แƒแƒก, แƒ’แƒแƒ›แƒแƒ˜แƒซแƒแƒฎแƒ”แƒ‘แƒก fork() แƒ›แƒ”แƒ—แƒแƒ“แƒก แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒแƒ›แƒแƒ˜แƒซแƒแƒฎแƒ”แƒ‘แƒก แƒ แƒแƒ˜แƒ›แƒ” แƒขแƒ˜แƒžแƒ˜แƒก exec() แƒแƒฎแƒแƒšแƒ˜ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒจแƒ”แƒกแƒแƒฅแƒ›แƒœแƒ”แƒšแƒแƒ“ แƒ“แƒ แƒ“แƒแƒ”แƒšแƒแƒ“แƒ”แƒ‘แƒ แƒ›แƒ˜แƒก แƒ“แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒแƒก. แƒ“แƒแƒ•แƒ”แƒšแƒแƒ“แƒแƒ—() แƒ–แƒแƒ แƒ˜. แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ‘แƒแƒ•แƒจแƒ•แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ แƒ’แƒแƒ“แƒ˜แƒก, shell แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ“แƒ”แƒ‘แƒ wait() แƒ–แƒแƒ แƒ˜แƒ“แƒแƒœ แƒ“แƒ แƒ™แƒ•แƒšแƒแƒ• แƒ“แƒแƒ‘แƒ”แƒญแƒ“แƒแƒ•แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒก แƒ“แƒ แƒ“แƒแƒ”แƒšแƒแƒ“แƒ”แƒ‘แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒงแƒ•แƒแƒœแƒแƒก.

fork() & exec() split แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒแƒซแƒšแƒ”แƒ•แƒก shell-แƒก แƒ’แƒแƒแƒ™แƒ”แƒ—แƒแƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒ แƒแƒ›, แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“:
wc แƒคแƒแƒ˜แƒšแƒ˜ > new_file.

แƒแƒ› แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒจแƒ˜, wc แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒ’แƒแƒ“แƒแƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒคแƒแƒ˜แƒšแƒ–แƒ”. แƒญแƒฃแƒ แƒ•แƒ˜แƒก แƒ›แƒ˜แƒฆแƒฌแƒ”แƒ•แƒ˜แƒก แƒ’แƒ–แƒ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜แƒ - แƒ“แƒแƒ แƒ”แƒ™แƒ•แƒแƒ›แƒ“แƒ” แƒ‘แƒแƒ•แƒจแƒ•แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒ— exec (), แƒญแƒฃแƒ แƒ•แƒ˜ แƒฎแƒฃแƒ แƒแƒ•แƒก แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒฃแƒš แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒก แƒ“แƒ แƒฎแƒกแƒœแƒ˜แƒก แƒคแƒแƒ˜แƒšแƒก แƒแƒฎแƒแƒšแƒ˜_แƒคแƒแƒ˜แƒšแƒ˜, แƒแƒ›แƒ แƒ˜แƒ’แƒแƒ“, แƒงแƒ•แƒ”แƒšแƒ แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒจแƒ”แƒ›แƒ“แƒ’แƒแƒ›แƒ˜ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒกแƒ’แƒแƒœ wc แƒ”แƒ™แƒ แƒแƒœแƒ˜แƒก แƒœแƒแƒชแƒ•แƒšแƒแƒ“ แƒ’แƒแƒ“แƒแƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ“แƒ”แƒ‘แƒ แƒคแƒแƒ˜แƒšแƒ–แƒ”.

Unix แƒ›แƒ˜แƒšแƒ˜ แƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ“แƒ”แƒ‘แƒ แƒแƒœแƒแƒšแƒแƒ’แƒ˜แƒฃแƒ แƒแƒ“, แƒ˜แƒ› แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ› แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ”แƒœ pipe() แƒ’แƒแƒ›แƒแƒซแƒแƒฎแƒ”แƒ‘แƒแƒก. แƒแƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ˜ แƒœแƒแƒ™แƒแƒ“แƒ˜ แƒ“แƒแƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ‘แƒ˜แƒ แƒ—แƒ•แƒจแƒ˜ แƒ›แƒ“แƒ”แƒ‘แƒแƒ แƒ” แƒ›แƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒ แƒ˜แƒ’แƒก, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒ“แƒแƒฃแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒกแƒฎแƒ•แƒ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒจแƒ”แƒงแƒ•แƒแƒœแƒ˜แƒก แƒœแƒแƒ™แƒแƒ“แƒ˜.

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ