SSUShell ๊ตฌํ์ Linux์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ bash ์๊ณผ ์ ์ฌํ SSUShell์ ์ง์ ๊ตฌํํด๋ณด๊ณ , Linux์ ๋ด์ฅ ๋ช ๋ น์ด ps, top์ ์ ์ฌํ ๋ช ๋ น์ด์ธ pps, ttop๋ฅผ ์ง์ ๊ตฌํํด๋ณด๋ฉด์ Linux์ ๊ฐ๋จํ ๋ด์ฅ ๋ช ๋ น์ด ๊ธฐ๋ฅ๊ณผ ์ด์์ฒด์ ์ ํ๋ก์ธ์ค ์ ๋ณด๋ค์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ์ดํดํ๋ค.
SSUShell์ ์คํ ํ๋ฆ๋๋ fork๋ฅผ ํตํด ์์ํ๋ก์ธ์ค๋ฅผ ์์ฑํ๊ณ ์์ํ๋ก์ธ์ค๋ exec()๋ฅผ ํธ์ถํ์ฌ ์
๋ ฅ๋ฐ์ ์ฌ์ฉ์ ๋ช
๋ น์ ์คํํ๋ ๊ฒ์ผ๋ก, ์ด๋ ๋ถ๋ชจํ๋ก์ธ์ค๋ wait()์ ํตํด ์์ํ๋ก์ธ์ค์ ์ข
๋ฃ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์๊ฑฐํ๋๋ก ํ๋ค. SSUShell์ โ๋ํ์โ ๋๋ โ๋ฐฐ์น(์ผ๊ด์ฒ๋ฆฌ)์โ์ผ๋ก ์คํ๋๋ค.
โ๋ํ์โ์ SSUShell์ ์คํํ๊ณ ์ํ๋ ๋ช
๋ น์ด๋ฅผ ๊ณ์ ์
๋ ฅ๋ฐ์ ์คํํ๋ ๊ฒ์ผ๋ก, while๋ฌธ์ ํตํด Crtl + C๋ฅผ ๋๋ฅผ ๋๊น์ง ๋ช
๋ น์ด๋ฅผ ๊ณ์ ์
๋ ฅ๋ฐ์ ์ ์๋๋ก ํ๋ค.
โ๋ฐฐ์น์ ๋ชจ๋โ๋ ๊ตฌํํ ์ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ฉด์ ์ธ์๋ก ํ์ผ์ ์ ๊ณตํ์ฌ ํด๋น ํ์ผ์ ๋ด์ฉ์ ์ฝ์ด ํ์ผ์ ์
๋ ฅ๋ ๋ช
๋ น์ด๋ฅผ ์คํํ๋ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ ๋ฐฐ์น์ ๋ชจ๋์์๋ ์
๋ ฅ๋ฐ์ ํ์ผ์ด ์กด์ฌํ๋์ง๋ฅผ ๋จผ์ ํ์ธํ๋๋ก ํ๊ณ , fgets๋ฅผ ํตํด ํ์ผ์ ์
๋ ฅ๋ ๋ด์ฉ๋ค์ ํ ์ค์ฉ ์คํํ๋๋ก ํ๋ค.
ํด๋น ํ์ผ์ ๋ชจ๋ ๋ด์ฉ์ ์ฝ์ด์ ์ํํ ํ์๋ ์ข
๋ฃํ๋ค. ์
๋ ฅ๋ฐ์ ๋ชจ๋ ๋ช
๋ น์ด๋ค์ ๊ณต๋ฐฑ์ ๊ธฐ์ค์ผ๋ก ๊ตฌ๋ถํ์ฌ ํ ํฐํ๋ฅผ ํ๋ค. ํ ํฐํ๋ ๋ช
๋ น์ด๋ค์ exec()๋ฅผ ์ฌ์ฉํ ๋ ๊ฐํธํ๊ฒ ์ฌ์ฉํ ์ ์๋ค.
SSUShell์์ ๊ฐ์ฅ ์ค์ํ ๊ธฐ๋ฅ์ ํ์ดํ๋ก, ํ์ดํ๋ ์
์ถ๋ ฅ ํ์ผ๋์คํฌ๋ฆฝํฐ๋ฅผ ์ ์ดํ๋ฉด์ ํ์ดํ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ช
๋ น์ด๋ค์ ์ฐ๊ฒฐํด์ฃผ๋ ๊ฒ์ด๋ค.
pipe()๋ฅผ ํตํด ์์ฑ๋ ํ์ผ๋์คํฌ๋ฆฝํฐ๋ค์ forkํ์ฌ ์์ฑ๋ ์์ํ๋ก์ธ์ค๋ค์๊ฒ์ dup2๋ฅผ ์ด์ฉํ์ฌ ์
์ถ๋ ฅ ํ์ผ๋์คํฌ๋ฆฝํฐ๋ค์ ์ฐ๊ฒฐํ ๋ค, execv()๋ฅผ ํธ์ถํ์ฌ ๋ช
๋ น์ด๋ฅผ ์ํํ๋ค.
๋ช
๋ น์ด๋ฅผ ์ํํ๊ธฐ ์ํด ๊ณ์ fork๋ก ์์ํ๋ก์ธ์ค๋ฅผ ์์ฑํ๋ค๋ณด๋ ๋ถ๋ชจํ๋ก์ธ์ค๋ ์์ํ๋ก์ธ์ค๊ฐ ์ ์์ ์ผ๋ก ์ข
๋ฃ๋์๋์ง, ์ข๋น ํ๋ก์ธ์ค๊ฐ ์๋์ง๋ ํ์ธํด์ผ ํ๋ค.
ttop์ pps๋ ๋ด์ฅ๋ช
๋ น์ด์ธ top์ ps์ ๊ธฐ๋ฅ๊ณผ ์ ์ฌํ ๊ธฐ๋ฅ๋ค์ ๊ฐ๊ณ ์๋ ๊ฒ์ผ๋ก ํ๋ก์ธ์ค์ pid, cpu์ฌ์ฉ๋, ๋ฉ๋ชจ๋ฆฌ์ฌ์ฉ๋ ๋ฑ์ ์ ๋ณด๋ค์ ํ๋์ ํ์
ํ ์ ์๋ค.
๋ํ ์ต์
์ ํตํด์ ์ถ๋ ฅ๋๋ ์ ๋ณด๋ค๋ ๋ฌ๋ผ์ง๋ค.