๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ 42seoul ํ”„๋กœ์ ํŠธ

[42seoul] minishell : ๋‚˜๋งŒ์˜ bash, ์‰˜ ํ”„๋กœ๊ทธ๋žจ ๋งŒ๋“ค๊ธฐ!

by kukim 2021. 10. 28.

โŒจ๏ธ minishell

heeheeshell by yeha and kukim
@42seoul : (2020.11.10 ~ 2021.01.03)

๐Ÿ“– About

  • ๊ฐ„๋‹จํ•œ ์‰˜ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.(The objective of this project is for you to create a simple shell.)
  • ์ž‘๋™์€ bash์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
  • bash์˜ ์ž‘๋™ ๋ฐฉ์‹, Standard Stream, foreground & background process, fork, IPC, pipe, execve, signal ๋“ฑ์„ ๊ณต๋ถ€ํ•ฉ๋‹ˆ๋‹ค.
  • ์ด์ „ ํ”„๋กœ์ ํŠธ libft, get_next_line ํ™œ์šฉ
  • ๊ตฌํ˜„ ๋ชฉ๋ก
    • echo, exit, return value, env, export, unset, cd, pwd
    • $PATH
    • multiline string
    • ๊ทธ ์™ธ command : /bin/[command]
    • redir(<,>, >>)</,>
    • pipe(|)

๐Ÿ“ Review

  • ์‚ฌ์ „ ์ง€์‹์„ ์–ป๊ธฐ ์œ„ํ•ด OS ์Šคํ„ฐ๋””๋ฅผ ๋‘ ๋‹ฌ ๋™์•ˆ ์ง„ํ–‰ํ•˜๋ฉฐ ์—ฐ์Šต ๋ฌธ์ œ๋„ ํ•จ๊ป˜ ์ œ์ถœํ–ˆ๋‹ค.
  • ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์‰˜์˜ ๋‚ด๋ถ€ ๋™์ž‘์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ ๋งค์šฐ ๋†€๋ผ์šด ์ผ์ด๋‹ค.ex)zsh์—์„œ ls -al ๋ช…๋ น์–ด ์‹คํ–‰ํ•˜๋ฉด zsh๋Š” ์ž์‹ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ๊ทธ ์ž์‹ ํ”„๋กœ์„ธ์Šค๋Š” /bin/ls ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค๋‹ˆ! ๋†€๋ž์ง€ ์•„๋‹ˆํ•œ๊ฐ€?
  • ๋ถ€๋ชจ/์ž์‹ ํ”„๋กœ์„ธ์Šค ์ƒ์„ฑ, IPCํ†ต์‹ ์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ฒŒ ๋˜์—ˆ๊ณ  signal๊ณผ exit ์ข…๋ฃŒ ์ฝ”๋“œ๋„ ์•Œ๊ฒŒ๋˜์—ˆ๋‹ค.
  • Nginx ์„œ๋น„์Šค๋ฅผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ๋กœ ์‹คํ–‰ํ•  ๋•Œ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ• ๊นŒ? ๊ถ๊ธˆํ–ˆ๋Š”๋ฐ ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ๋ถ€๋ชจ/์ž์‹ ํ”„๋กœ์„ธ์Šค ๋ถ„๊ธฐ ํ›„ ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๊ฐ€ waitpid() ํ•˜์ง€ ์•Š๊ณ  ์ข…๋ฃŒํ•˜๋ฉด ๋œ๋‹ค๋Š” ๊ฒƒ๋„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.
  • ํ•œ ์ค„ ํ‰ : ์•„๋‹ˆ ๋‚ด๊ฐ€ ์‰˜์„ ๋งŒ๋“ค์—ˆ๋‹ค๊ณ ? ๐Ÿ‘๐Ÿ‘๐Ÿ‘๐Ÿ‘

๐Ÿ Run

  • echo, Multi line, exit, return value, ';' cat, cd, pwd
    heeheeshell_1
  • env, export, unset, Signal(Ctrl + C, \, D), redir, pipe
    heeheeshell_2

๐Ÿ”— Reference

๐Ÿง‘๐Ÿป‍๐Ÿ’ป Author

yeha
kukim

ํƒœ๊ทธ

, , ,

๋Œ“๊ธ€0