Home
Justnote
Cancel

Minishell ④ 에러 처리

구현 과정 readline 함수의 컴파일 에러 원인 : readline 헤더를 stdio.h 헤더보다 먼저 include해서 발생. 순서를 변경하니 정상적으로 컴파일 됨 execve 가 실패하면 wait에 exit code가 13으로 오는 문제가...

Minishell ③ 구현 과정

minishell의 파싱 과정을 정리한 글 전체 과정 순서도 초기화 시그널 및 터미널 설정 시그널 설정 SIGQUIT(^\) : 시그널을 무시 SIGINT(^C) : 새 프롬프트를 표시 터미널 설정 tcgetattr, tcsetattr 과 c_lfag를 이용하...

Minishell ② 배경 지식

Shell 동작 방식 파일 또는 터미널로부터 입력을 받는다. 따옴표 규칙을 지키며 입력을 단어와 연산자로 쪼갠다. 이러한 토큰들은 메타문자로 구분된다. 토큰들을 간단하고 복합된 명령어로 파싱한다. 다양한 shell 확장을 진행한다. 필요한 리다이렉션들을 수행하고 해당 연산자와 피연산자들을 인자 리스트에서 제거한다. 명령을 ...

Minishell ① Subject

Summary 이 프로젝트의 목표는 너로 하여금 단순한 셸(shell)을 만들게 하는 것이다. 작은 bash나 zsh를 말이다. 이를 통해 프로세스와 파일 디스크립터에 관해 많이 배우게 될 것이다. Mandatory part 프로그램명 minishell 제출할 파일 ...

Philosophers ⑤ 회고

4주 간의 Philosophers 구현 기간을 돌이켜 보며 쓴 글입니다. 공부 방식의 변화 배경 이번 프로젝트는 본과정에 들어온 이후 처음으로 그룹 스터디 방식으로 진행하였다. 여태까지의 과제들은 혼자서 자료를 수집하고 코드를 작성하며 해결했지만 철학자 과제는 시작한지 몇 주가 지나도 방향이 잡히지 않아서 본 스터디에 참여하게...

Philosophers ④ 구현 과정 (Bonus part)

세마포어를 사용하는 과제 방법 구상 프로세스, 세마포어 관련 개념 및 함수 숙지 세마포어로 임계구역을 보호 모니터링을 위한 별도의 스레드/프로세스 설정 구현 순서 인자 파싱 초기화 프로세스 생성 자원 해제 구현 방법 순서도 문제 해결 방법 Bonus 파트는 mandatory와는 조금 다르게 두 ...

Philosophers ③ 구현 과정 (Mandatory part)

뮤텍스를 사용하는 과제 방법 구상 스레드, 뮤텍스 관련 개념 및 함수 숙지 시간 관련 함수 사용 방법 숙지 명령행 인자를 구조체에 저장 교착 상태와 기아 상태를 어떻게 해결할 방법 뮤텍스로 임계구역을 보호 어떤 변수를 보호해야하는가? → reader, writer가 동시에 존재할 수 있는...

macOS 업데이트 이후 발생하는 xcrun error

Issue macOS Ventura로 업데이트를 한 뒤 git을 실행하니 아래와 같은 오류 메시지가 출력됐다. xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTo...

Encryption과 Encoding의 차이점

Encryption (암호화) 평문을 암호문으로 변환하는 과정 평문 (plaintext) : 읽을 수 있는 데이터 암호문 (ciphertext) : 읽을 수 없는 데이터 기본적으로 데이터를 안전하게 보관하기 위해 사용된다. 반대 개념은 복호화(decryption) 사용자...

[C언어] int형 배열의 길이 확인

개요 이번 주에 42서울 라피신 rush01 평가 봉사를 하면서 int형 배열의 길이를 while(arr != '\0')로 확인할 경우 -fsanitize=address -g 로 옵션을 지정하여 컴파일하면 buffer-overflow가 발생할 수 있다는 사실을 알게됐다. 원인 문자열의 경우 끝을 알려주는 종결자(terminator, sentine...