suminworld

fork 3

[시스템 프로그래밍] Tiny Shell 프로젝트: 잡 컨트롤, 시그널, 레이스 컨디션 다루기

요약잡 컨트롤 안정화 + 백그라운드 완료 알림 + 인용/주석 토크나이저 개선 + 레이스/메모리 에러 내성프롬프트에 최근 종료 상태 표시, 변수 확장($VAR, $?), 파이프/리다이렉션 정상 동작 삽질기 요약해보았습니다(*´∀`) 전체 코드는 제 깃허브에 올려두었습니다! -> GitHub 레포지토리 suminworld-system-lab/shell at main · sumin-world/suminworld-system-labSystem programming & networking lab (C, Linux, OSTEP practice) - sumin-world/suminworld-system-labgithub.com 🛠️ 빌드 & 실행gcc -Wall -Wextra -O2 -o myshell myshel..

system 2025.09.09

[시스템 프로그래밍] fork() 시스템 콜로 이해하는 프로세스 복제 원리

유닉스/리눅스 시스템에서 새로운 프로세스를 생성하는 핵심 메커니즘인 fork() 시스템 콜- fork()는 단순해 보이지만 매우 강력한 기능이며, 쉘, 웹서버, 데이터베이스 등 많은 시스템 소프트웨어의 핵심 프로세스란?프로세스 = 실행 중인 프로그램프로그램 파일(fork) ≠ 프로세스(실행 중인 상태)각 프로세스는 고유한 PID(Process ID)를 가짐메모리 공간, 레지스터, 파일 디스크립터 등을 독립적으로 소유출처: linux-in-practice GitHub 위의 코드를 기반으로 공부한 내용을 정리하였습니다!fork() 예제 코드 분석#include #include #include #include static void child(){ printf("I'm child! my pid is %d.\n"..

system 2025.09.08

[시스템 프로그래밍] fork()와 execve()로 이해하는 bash의 명령어 실행 원리

bash 쉘이 어떻게 명령어를 실행하면서도 자기 자신은 유지하는지에 대해 학습한 내용 정리터미널에서 ls, cat, gcc 같은 명령어를 입력할 때 bash 작동 방식 - execve()와 fork() 시스템 콜을 통해 이해하기1. execve() 시스템 콜의 이해기본 문법int execve(const char *pathname, char *const argv[], char *const envp[]);매개변수 설명:pathname: 실행할 프로그램의 경로argv[]: 명령행 인자 배열 (NULL로 끝남)envp[]: 환경변수 배열 (NULL로 끝남)반환값:성공하면 반환하지 않음 (원래 프로그램이 완전히 교체되므로)실패하면 -1execve() 예제 코드#include #include int main() {..

system 2025.09.08