[Minishell] 터미널 제어
·
42Seoul/Minishell
https://hyeonski.tistory.com/5?category=471028 [C/UNIX] 개행 없이 한 글자씩 입력받는 getch() 만들기 (터미널 제어) 프롬프트 또는 콘솔 환경을 만들기 위해서 키보드 입력을 한 자씩 받아야할 때가 있다. unistd.h의 read함수를 STDIN에서 1바이트만큼 받으면 되지 않을까? 해서 다음과 같은 코드를 실행해보았다. #in hyeonski.tistory.com https://man7.org/linux/man-pages/man3/termios.3.html termios(3) - Linux manual page termios(3) — Linux manual page TERMIOS(3) Linux Programmer's Manual TERMIOS(3) N..
[Minishell] signal
·
42Seoul/Minishell
minishell 허용함수 정리 편에서 대략적인 함수 정리를 해놓았지만 좀 더 자세히 알아보자. signal(시그널) 여러가지 시그널 중 몇 가지만 알아보자. 1. SIGHUP : 터미널과 연결이 끊겼을 때 발생. 기본적인 처리는 프로세스가 종료된다. 2. SIGINT : 인터럽트가 발생했을때 발생. 기본적으로 프로세스가 종료된다. 9. SIGKILL : 프로세스를 무조건 종료한다. 절대 무시할 수 없으며 제어할 수 없다. 11. SIGSEGV : 프로세스가 잘못된 메모리를 참조했을 때 발생. 코어덤프를 남기고 종료된다. 19. SIGSTOP : 프로세스를 중단시킨다. 종료된 상태가 아니며 제어할 수 없다. 프로세스가 시그널을 받게되면 시그널에 해당되는 기본 동작을 하거나 그 시그널을 무시하거나 사용자가..
[Minishell] 허용 함수 정리
·
42Seoul/Minishell
기본적으로 알고있는 함수들을 제외하고 minishell을 만들 때 필요한 함수에 대해 정리해보자. fork #include pid_t fork(void); fork는 자식프로세스를 만들기 위해 사용되는 함수이다. fork에 의해 생성된 자식 프로세스는 자신만의 PID를 갖게 되며, PPID는 부모프로세스의 PID를 가지게 된다. return 성공할 경우 자식프로세스 PID가 부모에게 반환, 자식에게는 0 반환 실패할 경우 -1 리턴, error에 따른 errno 값 설정 error EAGAIN 자식프로세스를 위한 task 구조체를 할당할 수 없을 경우, 메모리 문제와 관련 wait #include #include pid_twait(int *stat_loc); 주로 fork() 를 이용해서 자식 프로세스(..
[Minishell] Shell이란?
·
42Seoul/Minishell
Minishell As beautiful as a shell 요약: 이번 프로젝트의 목표는 간단한 셸을 만드는 것입니다. 맞아요. 당신만의 작은 bash나 zsh이요. 프로세스나 파일 디스크립터에 대해 아주 많이 배우게 될 겁니다. 간단한 쉘 만들기 프로젝트인 minishell을 위해 쉘에 대해서 알아보자. Shell(셸/쉘)이란? 셸은 운영체제 상에서 다양한 운영 체제 기능과 서비스를 구현하는 인터페이스를 제공하는 프로그램이다. 셸은 사용자와 운영 체제의 내부(커널) 사이의 인터페이스를 감싸는 층이기에 껍데기라는 의미의 셸의 이름이 붙었다. 셀은 일반적으로 명령 줄과 그래픽 형의 두 종류로 분류된다. 명령 줄 셸은 운영 체제 상에서 CLI(Command Line Interface)를 제공하는 반면에, ..
WONILLISM
'42Seoul/Minishell' 카테고리의 글 목록