[42 Seoul] pipex - 서브젝트

현톨·2022년 11월 10일
0

42 서울 기록하기

목록 보기
7/8

과제 내용

프로그램 이름 pipex
제출 파일 Makefile, *.h, *.c
Makefile NAME, all, clean, fclean, re
매개 변수 file1 cmd1 cmd2 file2
외부 허용 함수 open, close, read, write, malloc, free.
perror, strerror, access, dup, dup2,
execve, exit, fork, pipe, unlink, wait, waitpid

ft_printf와 같이 직접 만든 함수
설명 이번 프로젝트는 pipe에 대해 다루는 프로젝트입니다.

당신의 프로그램은 다음과 같이 실행됩니다.:

./pipex file1 cmd1 cmd2 file2

4개의 매개변수를 입력받아야 합니다.

  • file1과 file2는 파일명입니다.
  • cmd1과 cmd2는 매개변수가 있는 쉘 명령어입니다.

이것은 다음 쉘 명령어와 정확히 일치하게 작동해야합니다.:

$> < file1 cmd1 | cmd2 > file2

예시

$> ./pipex infile "ls -l" "wc -l" outfile

위의 명령어는 < infile ls -l | wc -l > outfile 과 같이 작동합니다.

$> ./pipex infile "grep a1" "wc -w" outfile

위의 명령어는 < infile grep a1 | wc -w > outfile 과 같이 작동합니다.

요구사항

당신의 프로젝트는 다음의 규칙을 준수해야합니다.

  • 당신의 소스파일을 컴파일하는 Makefile을 제출해야하며, 리링크되어선 안됩니다.
  • 오류를 철저히 처리해야하며, 어떠한 경우에도 프로그램이 예기치않게 종료되어선 안됩니다.(segmentaion fault, bus error, double free 등)
  • 메모리 릭이 발생되어선 안됩니다.
  • 의심스러운 경우가 있다면 쉘 명렁어와 똑같이 에러처리를 하세요. (< file cmd1 | cmd2 > file2)

보너스

  • 다중 pipe 처리

    $> ./pipex file1 cmd1 cmd2 cmd3 ... cmdn file2

    위의 명령어는

    < file1 cmd1 | cmd2 | cmd3 ... cmdn > file2

    와 같이 작동해야합니다.
  • 첫번째 매개변수가 here_doc일 때 <<와 >> 기능 지원하기

    $> ./pipex here_doc LIMITER cmd cmd1 file

    위의 명령어는

    $> cmd << LIMITER | cmd1 >> file

    와 같이 작동해야합니다.
profile
기록하는 습관 들이기

0개의 댓글