리다이렉션 처리를 이해하려면 앞의 글 파이프 처리에서 정리했던 dup2 함수에 대한 이해가 필요합니다. 1. 리다이렉션 기호 command > file : 표준출력을 파일에 덮어쓰거나(overwrite) 파일이 없다면 새로 생성함 dup2(fd, 1) command > file : 표준출력을 파일에 개행문자 후 덧붙이거나(append) 파일이 없다면 새로 생성함 2. 리다이렉션 핵심 파이프에서 배웠던 dup2(fd1, fd2) 함수가 리다이렉션에서에서도 중요하다. 파이프와의 차이점은, 표준입력과 표준출력을 넘겨주는 대상이 프로세스가 아니라 파일(file)이라는 것 뿐이다. 2.1.
이 글에서 등장하는 모든 STDIN, STDOUT, STDERR은 파일디스크럽터 0, 1, 2를 조금 더 직관적으로 이해하기 쉽게 사용하려고 제 미니쉘 코드에 define 해 놓은 매크로 입니다. 보통은 STDIN_FILENO 혹은 0으로 사용합니다. 1. dup2() 함수란? 파일 식별자를 복제해 fd2를 fd1으로 바꾼다. 예를 들어 int dup2(fd, stdout); 와 같이 사용하면, 모든 출력이 fd로 향하게 된다. 즉, dup2 함수를 이용하면 부모프로세스가 자식프로세스에게 표준입력으로 문자열을 주는 프로그램을 만들 수 있게된다. 파이프의 기본 원리이다. 출처 : Linux : dup과 dup2 2. 파이프(Pipe) 란? 파이프를 이해하는데 이 글이 매우매우 도움이 되었습니다. 꼭 참고해보세요! 유닉