Author | Created | Updated |
mcha(Min-jae Cha) | 2022. 03. 15. | 2022. 04. 28. |
ย Pipex
์ด ์ดํ๋ Pipex์ ๊ดํ ๊ธ์
๋๋ค.
ย ํจ์
ํด๋ฆญ
ย ๊ถ๊ธ์
execve๋ ์ด๋ป๊ฒ ์ฌ์ฉํ ๊น?
ํ์ดํ
ํ๋ก์ธ์ค์ ์คํ ๊ฒฐ๊ณผ๋ฅผ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ๋๊ฒจ์ฃผ๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ค.
์๋ฅผ ๋ค์ด ์ฐ๋ฆฌ๊ฐ ls ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ค๊ณ ํ์ ๋ ls ๋ช
๋ น์ด์ ์คํ์ ๋ถ๋ชจ ํ๋ก์ธ์ค์ ์์ ํ๋ก์ธ์ค์์ ์ํ๋๋ค.
$ ls
Shell
๋ณต์ฌ
๋ง์ฝ์ ์ฐ๋ฆฌ๊ฐ Child ํ๋ก์ธ์ค์ ์ถ๋ ฅ์ธ ls์ ๊ฒฐ๊ณผ์์ ํน์ ํ์ผ ์ด๋ฆ ํ์์ ๊ฐ์ง ํ์ผ๋ง์ ๊ฐ๊ณ ์ถ์ ๋
ํ์ดํ์ grep ๋ช
๋ น์ด ์กฐํฉ์ ์ฌ์ฉํ๋ค.
$ ls | grep a.out
Shell
๋ณต์ฌ
โ [?] ๋ถ๋ชจ ํ๋ก์ธ์ค์์ ๊ณ์ fork ํ ๊น ์๋๋ฉด ์์ ํ๋ก์ธ์ค์์ fork ํ ๊น?
C์๋ ํ์ดํ๋ฅผ ๊ตฌํํ ์ ์๋ ํจ์๊ฐ ์กด์ฌํ๋ค pipe()
์ด ํจ์์ prototype๊ณผ parameter๋ ๋ค์๊ณผ ๊ฐ๋ค.
#include <unistd.h>
int pipe(int fildes[2]);
C
๋ณต์ฌ
ํน์ดํ๊ฒ ๋ ๊ฐ์ ๊ณต๊ฐ์ ๊ฐ์ง ์ ์ํ ํ์ผ ๋์คํฌ๋ฆฝํฐ๊ฐ ํ๋ผ๋ฏธํฐ๋ก ๋ค์ด๊ฐ๋ ๊ฒ์ ์ ์ ์๋ค.
ํ๋ผ๋ฏธํฐ๋ก ๋ฐ๋ ํ์ผ ๋์คํฌ๋ฆฝํฐ์ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ๋ค.
fd[0]์ ์ฝ๊ธฐ์ฉ, fd[1]์ ์ฐ๊ธฐ์ฉ์ด๋ค. ํ๋ก์ธ์ค์์ fd[0]์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์๊ณ fd[1]์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ธ ์ ์๋ค.
๋ค์์ ์์ ์ด๋ค.(ํด๋ฆญ)
โ ํ์ดํ๋ฅผ ๊ณ๋ค์ธ ๋ช ๋ น์ด ์คํ
Reference
ย ์ํํ๊ณ ์ ํ๋ Command line
$ la -la | sort | grep total
Shell
๋ณต์ฌ