POSiX 기초
- POSIX ( Portable Operating System Interface ) 란 무엇일까 ?
POSIX는 이식 가능 운영 체제 인터페이스의 약자로, 서로 다른 UNIX OS의 공통 API 를 정리하여 이식성이 높은 유닉스 응용 프로그램을 개발하기 위한 목적으로 IEEE가 책정한 애플리케이션 인터페이스
규격이다.
POSIX를 풀어서 설명하자면 한 운영체제에서 개발한 프로그램을 다른 운영체제에서도 쉽게 돌아가도록 하는 표준이라고 한다. (소스코드의 호환)
- 표준 스트림
표준 스트림(standard streams)은 특정한 프로그래밍 언어 인터페이스뿐 아니라 유닉스 및 유닉스 계열 운영 체제(어느 정도까지는 윈도에도 해당함)에서 컴퓨터 프로그램과 그 환경(일반적으로 단말기) 사이에 미리 연결된 입출력 통로를 가리킨다.
표준 스트림으로 인해 프로그래머나 프로그램에서 입출력을 사용해야 할 때, 입출력 장치를 연결하기 위한 그 어떤 추가 작업도 필요하지 않게 되었다.
표준 스트림에는 표준입력(stdin) 표준 출력(stdout) 표준 오류 (stderr)가 있다. 그리고 이들은 POSIX에
들어있다.
stdin: 표준 입력은 프로그램으로 들어가는 데이터(보통은 문자열) 스트림이다.
- POSIX <unistd.h> STDIN_FILENO
stdout: 표준 출력은 프로그램이 출력 데이터를 기록하는 스트림이다.
- <unistd.h> STDOUT_FILENO
stderr: 표준 오류는 프로그램이 오류 메시지나 진단을 출력하기 위해 일반적으로 쓰이는 또다른 출력
스트림이다.
- <unistd.h> STDERR_FILENO
- 표준 스트림의 사용
터미널에서 이러한 명령어를 사용했다고 가정하자
echo foo
stdin(keyboard) -> echo -> stdout (console)
echo -> stderr (console)
stdin 으로 입력을 받아 echo로 넘겨준다. echo에서 stderr에 데이터를 저장하고 stdout 에서 데이터를 출력한다.
- 파이프 = |
어떤 프로그램의 출력 결과를 다른 프로그램의 입력 값으로 쓰는게 파이프이다.
터미널에 아래 명령어를 쓰면
echo "foo bar baz" | wc -w 는
echo 기능에서 wc 명령어 로 foo bar baz 를 넘겨주는 역할을 해준다