본문 바로가기

Linux System Programming

(5)
[Linux System Programming] 프로세스 - fork, exec 안녕하세요.오늘은 fork와 exec에 대해 알아보도록 하겠습니다.서론운영체제에서 프로세스 생성과 프로세스 실행은 가장 기본적이면서도 중요한 개념입니다.리눅스에서 이 두가지 역할을 fork()와 exec() 시스템 콜이 담당합니다.프로세스 생성: fork()1) fork() 란?fork()는 현재 실행 중인 프로세스를 복제하여 새로운 프로세스를 만드는 시스템 콜입니다. 부모 프로세스와 완전히 동일한 자식프로세스가 생성되며,두 프로세스는 fork 이후 서로 독립적으로 실행됩니다. * fork() 반환값프로세스반환값부모자식 PID자식0실패-1 * fork() 예제 코드#include #include #include int main(){ pid_t pid = fork(); if (pid == 0) ..
[Linux System Programming] Effective User ID 안녕하세요.오늘은 Effective User ID에 대해 알아보겠습니다.서론Linux System에서 프로세스의 권한은 단순히 “누가 실행했느냐” 만으로 결정되지 않습니다.프로세스는 여러 개의 User ID 속성을 가지며, 그 중에서 Effective User ID(EUID)가 실제 권한의 핵심 역할을 합니다. 이번 글에서는 EUID가 무엇인지, 왜 중요한지, 그리고 실제 예제를 통해 어떻게 동작하는지 살펴보겠습니다.User ID 종류리눅스의 권한 모델을 이해하려면 먼저 프로세스가 가진 여러 UID를 구분해야 합니다.RUID (Real User ID)→ 프로세스를 실행한 실제 사용자. 즉 "누가 실행했는가?"EUID (Effective User ID)→ 접근 제어와 권한 판별에 사용되는 ID. 즉 "어떤..
[Linux System Programming] File - inode 안녕하세요.오늘은 File의 inode에 대해 알아보겠습니다.서론ls -li 명령어를 사용하면 여러 파일들이 보입니다. 리눅스에서 파일은 단순히 이름으로 구분하지 않습니다.ls 명령으로 보이는 파일 이름은 inode를 가리키는 포인터로, 리눅스에서 파일을 구분할 때는 inode를 사용합니다. 커널에서 파일을 조작할 때는 inode를 다루는 것이고, inode 안에 있는 메타데이터가 system call (stat 계열) 을 통해 접근 됩니다.inode (index node)정의리눅스 파일 시스템에서 파일의 메타데이터를 저장하는 자료구조입니다.파일의 실제 데이터 블록 위치 뿐 아니라, 소유자, 권한, 시간 정보 등이 inode 안에 들어있습니다.inode가 저장하는 정보파일 유형 (regular file,..
[Linux System Programming] File Descriptor & File Pointer 안녕하세요.오늘은 File Descriptor와 File Pointer에 대해 알아보겠습니다.File HandlerLinux에서 파일을 다룰 때 2가지 방식을 사용할 수 있습니다.low-level IO → File Descriptorhigh-level IO → File PointerFile Descriptor정의정수 값(int) 으로 표현되는 파일 식별자입니다.유닉스 / 리눅스 계열에서 열린 파일, 디렉토리, 소켓, 파이프, 장치 등을 식별하기 위해 운영체제가 부여하는 번호표 입니다.→ 커널이 제공하는, 프로세스 입장에서 파일에 접근하는 핸들 역할 특징1) 프로세스 단위 관리각 프로세스는 고유의 파일 디스크립터 테이블을 가집니다.같은 파일을 열어도 프로세스마다 다른 FD 값을 부여받습니다. 2) 표준 ..
[Linux System Programming] Makefile & make 명령어 안녕하세요.오늘은 Makefile과 make 명령어에 대해서 알아보겠습니다..c 파일 빌드 및 실행Makefile을 알아보기에 앞서, 리눅스 환경에서 C언어로 간단한 프로그램을 작성해보겠습니다. vscode로 example.c 파일을 만들겠습니다.code example.c #include int main(){ int N; printf("Enter the number: "); scanf("%d", &N); printf("Your number is %d\n", N);} gcc를 이용해 .c 파일을 빌드할 수 있습니다.gcc example.c -o example 파일 리스트를 보면 output file이 생긴걸 볼 수 있습니다.이를 ./로 실행시키면, 위에서 만든 프로그램이 제대로 동작하..