728x90 반응형 리눅스 시스템 및 네트워크 프로그래밍10 리눅스 파일 시스템과 stat() 시스템 콜: 파일 정보 조회 및 관리 리눅스에서 파일은 단순한 데이터 저장소가 아니라 다양한 속성과 메타데이터를 포함하는 객체입니다. 파일의 크기, 접근 권한, 수정 시간 등을 확인하려면 stat() 시스템 콜을 사용해야 합니다.이번 글에서는 리눅스 파일 시스템의 개념과 함께 stat() 시스템 콜을 활용하여 파일 정보를 조회하는 방법을 설명합니다.1. 리눅스 파일 시스템 개요리눅스에서 모든 것은 파일로 취급됩니다. 일반 파일, 디렉터리, 심볼릭 링크, 소켓, 디바이스 파일 등 다양한 유형이 존재하며, 각각의 파일은 inode(아이노드) 라는 자료구조로 관리됩니다.아이노드는 파일의 실제 내용이 저장된 블록을 가리키는 메타데이터 구조이며, 다음과 같은 정보를 포함합니다.파일 유형 (일반 파일, 디렉터리, 심볼릭 링크 등)파일 크기소유자 및 그.. 리눅스 시스템 및 네트워크 프로그래밍/시스템 프로그래밍 2025. 2. 3. 리눅스 시그널과 핸들링: SIGINT, SIGTERM, SIGKILL을 이해하고 활용하기 리눅스 운영체제에서 시그널(Signal)은 프로세스 간 또는 커널이 프로세스에 비동기적으로 전달하는 인터럽트(Interrupt) 메커니즘입니다. 시그널을 활용하면 프로세스를 종료하거나 특정 동작을 수행하도록 제어할 수 있습니다.이번 글에서는 리눅스 시그널의 개념과 주요 시그널 종류, 그리고 시그널 핸들링(handling) 방법을 코드 예제와 함께 설명하겠습니다.1. 리눅스 시그널(Signal)이란?운영체제에서 시그널은 특정 이벤트가 발생했을 때 프로세스에 전달되는 비동기 알림입니다.시그널은 프로세스가 자발적으로 받을 수도 있고, 커널, 다른 프로세스, 또는 사용자가 직접 보낼 수도 있습니다.✅ 시그널이 사용되는 주요 상황Ctrl + C (SIGINT): 터미널에서 프로세스 중단kill 명령어 (SIGTE.. 리눅스 시스템 및 네트워크 프로그래밍/시스템 프로그래밍 2025. 2. 3. 리눅스 IPC(프로세스 간 통신) 기법: Pipe, FIFO, 메시지 큐, 공유 메모리, 소켓의 원리와 활용 리눅스에서 IPC(Inter-Process Communication, 프로세스 간 통신)은 서로 다른 프로세스가 데이터를 주고받고 협력할 수 있도록 하는 기술입니다.운영체제에서 프로세스는 독립적인 주소 공간을 가지므로, 기본적으로 하나의 프로세스에서 다른 프로세스의 메모리에 접근할 수 없습니다. 따라서 파이프, 공유 메모리, 메시지 큐, 소켓 등의 IPC 기법을 활용하여 데이터를 교환해야 합니다.이번 글에서는 리눅스에서 제공하는 주요 IPC 기법을 개념부터 코드 예제까지 자세히 다뤄보겠습니다.1. IPC(프로세스 간 통신)의 필요성운영체제에서 멀티프로세스 환경은 일반적이며, 개별 프로세스 간 협업이 필요할 때 IPC를 사용합니다.✅ IPC의 주요 사용 사례부모-자식 프로세스 간 데이터 공유독립적인 프로세.. 리눅스 시스템 및 네트워크 프로그래밍/시스템 프로그래밍 2025. 2. 3. 리눅스 프로세스 생성과 관리: fork, exec, wait의 동작 원리와 활용 리눅스에서 프로세스는 프로그램을 실행하는 독립적인 실행 단위입니다. 시스템의 모든 작업은 프로세스를 통해 수행되며, 새로운 프로세스를 생성하고 관리하는 것은 시스템 프로그래밍에서 필수적인 개념입니다.이번 글에서는 리눅스에서 프로세스를 생성하고 관리하는 주요 시스템 콜(fork, exec, wait, exit 등)의 동작 원리를 설명하고, 이를 활용하는 방법을 코드와 함께 다뤄보겠습니다.1. 프로세스 개념프로세스(Process)는 실행 중인 프로그램을 의미하며, 운영체제에서 CPU와 메모리를 할당받아 독립적으로 동작합니다.PID(Process ID): 각 프로세스는 고유한 ID를 가집니다.부모 프로세스와 자식 프로세스: 한 프로세스가 다른 프로세스를 생성하면, 원래의 프로세스를 부모 프로세스, 새로 생성된.. 리눅스 시스템 및 네트워크 프로그래밍/시스템 프로그래밍 2025. 2. 3. 비동기 I/O와 고급 파일 처리 기법: 리눅스에서 효율적인 데이터 처리하기 리눅스에서 파일 I/O를 효율적으로 처리하는 것은 시스템 성능에 큰 영향을 미칩니다. 일반적인 파일 입출력은 동기식(Synchronous) 방식으로 동작하며, 데이터가 읽히거나 쓰일 때까지 프로세스가 대기해야 합니다. 그러나 비동기 I/O(Asynchronous I/O)를 활용하면 대기 시간을 줄이고 시스템의 전체적인 처리량을 증가시킬 수 있습니다.이번 글에서는 비동기 I/O 모델과 고급 파일 처리 기법을 소개하고, 이를 활용하는 방법을 코드와 함께 설명하겠습니다.1. 비동기 I/O란?비동기 I/O(Asynchronous I/O, AIO)는 파일 읽기/쓰기가 완료될 때까지 프로세스가 블로킹되지 않는 입출력 방식입니다. 리눅스에서 제공하는 주요 비동기 I/O 모델은 다음과 같습니다.I/O 방식설명 예제 시.. 리눅스 시스템 및 네트워크 프로그래밍/시스템 프로그래밍 2025. 2. 3. 파일 디스크립터와 입출력 시스템 콜 리눅스에서 파일, 소켓, 파이프 등 다양한 리소스를 다룰 때 파일 디스크립터(File Descriptor, FD) 개념을 이해하는 것이 중요합니다. 파일 디스크립터는 운영체제가 프로세스와 리소스를 연결하는 핵심 구조이며, 이를 통해 입출력 시스템 콜을 효율적으로 활용할 수 있습니다.이번 글에서는 파일 디스크립터의 개념을 설명하고, 리눅스에서 제공하는 주요 입출력 시스템 콜(open, read, write, close, lseek 등)의 동작 원리와 사용법을 살펴보겠습니다.1. 파일 디스크립터란?파일 디스크립터(File Descriptor, FD)는 리눅스 운영체제가 열려 있는 파일이나 소켓 등을 식별하기 위해 프로세스에 할당하는 정수 값입니다. 모든 프로세스는 파일 디스크립터를 통해 리소스에 접근합니다... 리눅스 시스템 및 네트워크 프로그래밍/시스템 프로그래밍 2025. 2. 3. 리눅스 시스템 콜 이해하기: 원리와 활용법 리눅스 운영체제에서 애플리케이션이 하드웨어와 직접 상호작용하는 것은 불가능합니다. 대신, 커널을 통해 간접적으로 접근해야 하며, 이를 가능하게 하는 것이 시스템 콜(System Call)입니다. 시스템 콜은 사용자 공간(User Space)에서 커널 공간(Kernel Space)으로 제어를 전환하는 인터페이스로, 파일 입출력, 프로세스 관리, 메모리 할당 등 다양한 기능을 수행합니다. 이번 포스팅에서는 시스템 콜의 개념을 명확히 정리하고, 주요 시스템 콜을 예제와 함께 살펴보며, 효율적인 활용 방안을 논의합니다.1. 시스템 콜이란?사용자 애플리케이션은 직접 하드웨어를 조작할 수 없습니다. 대신, 커널이 제공하는 인터페이스를 통해 필요한 작업을 요청하는데, 이를 시스템 콜(System Call)이라 합니다.. 리눅스 시스템 및 네트워크 프로그래밍/시스템 프로그래밍 2025. 2. 3. 논블로킹 소켓과 멀티플렉싱: select, poll, epoll 비교 네트워크 프로그래밍에서 다수의 클라이언트를 효율적으로 처리하는 것은 매우 중요한 과제입니다. 기본적인 블로킹(Blocking) 방식은 클라이언트의 요청을 처리하는 동안 다른 클라이언트의 요청을 받을 수 없다는 단점이 있습니다. 이를 해결하기 위해 논블로킹(Non-blocking) 소켓과 멀티플렉싱(Multiplexing) 기법이 사용됩니다.이번 글에서는 논블로킹 소켓의 개념을 이해하고, 이를 활용한 멀티플렉싱 기법인 select(), poll(), epoll()의 차이점을 비교하며, 각 기법을 적용한 코드 예제를 소개하겠습니다.1. 블로킹과 논블로킹 소켓이란?1.1 블로킹 소켓(Blocking Socket)기본적으로 소켓은 블로킹(Blocking) 방식으로 동작합니다. 즉, recv(), send(), .. 리눅스 시스템 및 네트워크 프로그래밍/네트워크 프로그래밍 2025. 2. 2. UDP 소켓 프로그래밍 기초: 서버와 클라이언트 구현하기 2025.02.01 - [네트워크 프로그래밍] - TCP 소켓 프로그래밍 기초: 서버와 클라이언트 구현하기 TCP 소켓 프로그래밍 기초: 서버와 클라이언트 구현하기네트워크 프로그래밍에서 가장 기본적인 개념 중 하나는 TCP 소켓 프로그래밍입니다. TCP는 신뢰성 있는 데이터 전송을 보장하는 연결 지향 프로토콜로, 서버와 클라이언트 간의 안정적인 통신을roblogs.tistory.com TCP 소켓 프로그래밍에 이어 이번 글에서는 UDP(User Datagram Protocol) 소켓 프로그래밍에 대해 다룹니다. UDP는 TCP와 달리 연결을 설정하지 않고 데이터를 빠르게 전송하는 특징이 있습니다. 이를 통해 실시간 데이터 전송이나 경량 네트워크 애플리케이션에 적합한 프로토콜입니다. 본 글에서는 UDP 소.. 리눅스 시스템 및 네트워크 프로그래밍/네트워크 프로그래밍 2025. 2. 2. TCP 소켓 프로그래밍 기초: 서버와 클라이언트 구현하기 네트워크 프로그래밍에서 가장 기본적인 개념 중 하나는 TCP 소켓 프로그래밍입니다. TCP는 신뢰성 있는 데이터 전송을 보장하는 연결 지향 프로토콜로, 서버와 클라이언트 간의 안정적인 통신을 가능하게 합니다. 이번 글에서는 TCP 소켓의 개념을 설명하고, C 언어를 이용해 간단한 서버와 클라이언트를 구현하는 방법을 소개합니다.1. TCP 소켓이란?TCP(Transmission Control Protocol)는 데이터의 순서와 무결성을 보장하는 프로토콜입니다. 이를 구현하기 위해 운영체제는 소켓(Socket)이라는 개념을 제공합니다. 소켓은 네트워크를 통해 데이터를 송수신하는 엔드포인트 역할을 하며, 두 개의 소켓이 연결되면 데이터를 주고받을 수 있습니다.2. TCP 서버와 클라이언트의 동작 방식TCP 기.. 리눅스 시스템 및 네트워크 프로그래밍/네트워크 프로그래밍 2025. 2. 1. 이전 1 다음 💲 추천 글 728x90 반응형