Home
Justnote
Cancel

C++ 개념 정리 : 참조자(Reference)

레퍼런스 개념 특정 변수의 실제 이름 대신 사용할 수 있는 별명 사용 방법 int x = 10; int& ref_x = x; // ref_x는 x의 참조자이다 특징 크기가 큰 데이터를 인수로 전달할 경우에 유용하다. 참조자를 리턴하는 것은 주소값만 복사하면 되기 때문에 값을 리턴하는 것에 비해 효율적...

Minishell ⑤ 회고

6주 동안의 minishell 과제를 마치며 minishell Shell을 만들어라. Subject를 처음 봤을 때 상당히 막연했다. Shell을 직접 만들라니. 여지껏 shell = 터미널 정도로만 생각했던 나로서는 이 프로그램을 어떤 방식으로 구현해야 할지, 무슨 기능을 만들어야 할지 감도 잡히지 않았다. 그러던 차에 한 ...

C++ 개념 정리 : namespace

namespace 개념 연관된 식별자(변수, 함수, 클래스 등)들을 하나의 이름으로 묶는데 사용 이름이 겹쳐서 발생하는 문제를 예방한다. 코드를 더욱 논리적으로 조직할 수 있게 해준다. using namespace의 name들을 현재 스코프에 보이도록 해준다. 예시 MyNamespace::myFunction...

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가 동시에 존재할 수 있는...