본문 바로가기
카테고리 없음

[PIPEX/C] pipex 목표

by 블로블로글 2024. 3. 23.

pipex 프로젝트: Unix 파이프라인의 C 언어 구현

Unix 시스템에서 파이프라인은 데이터를 한 프로세스에서 다른 프로세스로 효율적으로 전달하는 강력한 도구입니다. pipex 프로젝트는 이러한 파이프라인의 작동 원리를 C 언어로 구현한 것으로, 명령줄 인수를 통해 파일과 명령어를 받아 처리하는 프로그램입니다.

프로그램 실행 조건

pipex는 아래와 같이 실행되어야 합니다:

$> ./pipex file1 cmd1 cmd2 file2
  • file1 에서 입력을 받아 cmd1 명령어를 실행합니다.
  • cmd1 의 실행 결과는 cmd2 로 전달됩니다.
  • cmd2 의 최종 결과는 file2 에 저장됩니다.

이 과정은 유닉스의 파이프라인(< file1 cmd1 | cmd2 > file2)과 동일한 작업을 수행합니다.

필수 조건

파일 접근

  • 프로그램은 file1을 읽고 file2에 결과를 쓸 수 있는 권한이 있어야 합니다.

에러 처리

  • 에러가 발생했을 때, 적절한 에러 메시지를 출력해야 합니다.

핵심 작업 명령어 및 함수

pipex 프로젝트에서 사용되는 중요한 시스템 호출과 함수들은 다음과 같습니다:

  • perror: 에러 메시지를 출력합니다.
  • strerror: 에러 번호에 해당하는 에러 메시지를 반환합니다.
  • access: 파일의 접근 권한을 확인합니다.
  • dup & dup2: 파일 디스크립터를 복제합니다.
  • execve: 새로운 프로세스를 실행합니다.
  • exit: 프로그램을 종료합니다.
  • fork: 현재 프로세스를 복제하여 새로운 프로세스를 생성합니다.
  • pipe: 데이터 전달을 위한 파이프를 생성합니다.
  • unlink: 파일을 삭제합니다.
  • wait & waitpid: 자식 프로세스의 종료를 대기하고 종료 상태를 받습니다.

구현 상세

pipex의 구현은 파일 디스크립터를 활용하여 입력 파일에서 명령어의 실행 결과를 읽고, 그 결과를 다음 명령어로 전달한 뒤 최종 출력을 파일에 저장하는 과정으로 이루어집니다.