⌨️ 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
- env, export, unset, Signal(Ctrl + C, \, D), redir, pipe
🔗 Reference
🧑🏻💻 Author
'📝 회고 > 🏁 42seoul 프로젝트' 카테고리의 다른 글
[42seoul] Philosophers : 식사하는 철학자 문제 (0) | 2021.10.28 |
---|---|
[42seoul] ft_services : Kubernetes를 활용한 (작은) 서비스 아키텍쳐 배포 (0) | 2021.10.28 |
[42seoul] libasm : assembly(어셈블리)를 활용한 몇 개의 함수 구현 (0) | 2021.10.28 |
[42seoul] cub3d : Ray casting을 활용한 Wolfensteid3D 유사 그래픽 구현 (0) | 2021.10.28 |
[42seoul] ft_server : Dockerfile을 활용한 간단한 서비스 배포 (0) | 2021.10.28 |
댓글