Search
๐Ÿš

Minishell

Created
2022/03/15 10:32
Updated
2022/04/28 07:48
Tags
Circle 03
Shell
bash
File Descriptor
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
๋ณต์‚ฌ