LinuxProgramming(15)
-
[리눅스 프로그래밍 시리즈 18편] pipe 시스템 콜: 리눅스 프로세스 간 통신(IPC)의 가장 기본 구조
목표: pipe 시스템 콜을 이용한 프로세스 간 통신을 이해한다 결과: 한 프로세스의 출력이 다른 프로세스의 입력으로 전달되는 구조를 구현할 수 있다1. 프로세스는 기본적으로 서로 독립적이다리눅스에서 실행되는 프로세스는 서로 독립적인 메모리 공간을 가진다.즉 기본적으로는다른 프로세스 변수 접근 불가메모리 공유 불가하지만 실제 프로그램에서는 프로세스 간 데이터 전달이 필요하다.예:쉘 파이프 (ls | grep txt)서버 프로세스데이터 처리 파이프라인이런 통신을 IPC (Inter Process Communication) 라고 한다.그리고 가장 기본적인 IPC가 바로 pipe다.2. pipe의 기본 개념pipe는 한 방향 데이터 통로다.구조:프로세스 A → pipe → 프로세스 BA는 데이터를 쓰고..
2026.03.13 -
[리눅스 프로그래밍 시리즈 16편] lseek 완전 이해: 파일 읽기 위치를 자유롭게 이동하는 방법
목표: 파일 포인터 위치를 이동하는 방법을 이해한다 결과: 파일을 원하는 위치에서 읽거나 쓸 수 있는 프로그램을 만들 수 있다1. 파일은 항상 '위치'가 있다이전 글(15편)에서 우리는 다음 시스템 콜을 배웠다.open()read()write()close()하지만 한 가지 중요한 개념이 있다.파일에는 현재 읽기/쓰기 위치가 존재한다.예:Hello Linux처음 read()를 실행하면H e l l o를 읽는다.다음 read()는(이어서) Linux를 읽는다.즉 파일에는 현재 위치(offset) 가 존재한다.2. lseek란 무엇인가?lseek()은 파일의 현재 위치를 이동시키는 시스템 콜이다.#include off_t lseek(int fd, off_t offset, int whence);구성:fd → 파..
2026.03.12 -
[리눅스 프로그래밍 시리즈 15편] 리눅스 파일 I/O 프로그래밍: open, read, write 시스템 콜 완전 이해
목표: 리눅스에서 파일을 직접 읽고 쓰는 시스템 프로그래밍 방식을 이해한다 결과: C 프로그램에서 파일을 열고 데이터를 읽고 쓰는 코드를 작성할 수 있다1. 이제부터 '진짜' 리눅스 프로그래밍지금까지는 주로명령어개발 도구스크립트위주의 내용을 다뤘다.하지만 리눅스 시스템 프로그래밍에서는 운영체제와 직접 상호작용한다.대표적인 방법이 바로 시스템 콜(System Call) 이다.예:파일 열기 → open()파일 읽기 → read()파일 쓰기 → write()파일 닫기 → close()이 함수들은 리눅스 커널과 직접 연결된다.2. 파일 I/O의 기본 흐름리눅스 파일 작업은 항상 다음 순서를 따른다.open() ↓read() / write() ↓close()즉1) 파일 열기2) 데이터 읽기/쓰기3) 파일 닫기3...
2026.03.11 -
[리눅스 프로그래밍 시리즈 14편] Bash 쉘 스크립트 실전 자동화: 로그 분석과 서버 상태 체크 스크립트 만들기
목표: 실무에서 바로 사용할 수 있는 자동화 스크립트를 만든다 결과: 로그 분석, 서버 상태 확인을 자동으로 수행하는 Bash 스크립트를 작성할 수 있다1. 왜 쉘 스크립트 자동화가 중요한가?리눅스 서버를 운영하거나 개발 환경을 관리하다 보면 반복 작업이 매우 많다.예를 들어:로그에서 ERROR 개수 확인디스크 사용량 체크서버 상태 확인특정 프로세스 실행 여부 확인이런 작업을 매번 수동으로 입력하면 비효율적이다.그래서 실무에서는 쉘 스크립트로 자동화한다.2. 로그 분석 자동화 스크립트먼저 간단한 로그 분석 스크립트를 만들어 보자.파일 생성:nano log_check.sh내용 작성:#!/bin/bashLOGFILE="server.log"ERROR_COUNT=$(grep "ERROR" $LOGFILE | w..
2026.03.11 -
[리눅스 프로그래밍 시리즈 13편] Bash 쉘 스크립트 입문: 리눅스 작업을 자동화하는 첫 번째 단계
목표: Bash 스크립트를 작성하고 실행할 수 있다 결과: 반복 작업을 자동화하는 기본 스크립트를 만들 수 있다1. 쉘 스크립트란 무엇인가?리눅스에서 여러 명령어를 한 번에 실행하고 싶을 때가 있다.예:로그 파일 분석서버 상태 확인백업 실행프로그램 빌드이런 작업을 매번 명령어로 입력하는 대신 하나의 파일로 만들어 실행할 수 있다.이 파일을 쉘 스크립트(Shell Script) 라고 한다.가장 많이 사용하는 쉘은 Bash 이다.2. 첫 번째 Bash 스크립트 만들기파일 생성:nano hello.sh내용 작성:#!/bin/bashecho "Hello Linux Script"첫 줄 의미:#!/bin/bash이 스크립트를 bash로 실행하라는 의미다.3. 실행 권한 부여스크립트를 실행하려면 실행 권한이 필요하다..
2026.03.10 -
[리눅스 프로그래밍 시리즈 12편] ltrace 사용법: 리눅스 프로그램이 어떤 라이브러리 함수를 호출하는지 추적하기
목표: ltrace를 이용해 프로그램이 어떤 라이브러리 함수를 호출하는지 확인한다 결과: 라이브러리 관련 문제와 함수 호출 흐름을 분석할 수 있다1. ltrace는 무엇인가?11편에서 우리는 strace를 배웠다.strace는 프로그램이 호출하는 시스템 콜(System Call) 을 추적한다.반면 ltrace는 다음을 추적한다.라이브러리 함수 호출 (Library Call)예:printfmallocfreefopenstrcmp즉 프로그램이 어떤 라이브러리 함수를 호출하는지 확인할 수 있다.2. strace vs ltrace 차이도구추적 대상strace시스템 콜ltrace라이브러리 함수예:프로그램이 파일을 열 때fopen() → 라이브러리 함수open() → 시스템 콜ltrace는 fopen을 보고st..
2026.03.09