정보보안공부

Linux_리눅스 파이프 / 리다이렉션 본문

Linux

Linux_리눅스 파이프 / 리다이렉션

Steady_sp 2018. 7. 5. 13:03

리눅스 파이프 / 리다이렉션

- 오라클 가상 머신 사용

- CentOS6

 

<파이프 / 리다이렉션>

 

#1 파이프

- 파이프는 프로세스( 명령어끼리 ) 통신하는 방법

- 파이프 사용 : 명령어 1 | 명령어 2 | 명령어 3 ...

 

*** 파이프 형태 만들어보기

 

 

-> cat의 결과를 통해 grep으로 root가 포함된 부분을 찾는다.

-> cat의 결과를 통해 grep으로 root가 포함된 부분을 찾고 wc -l을 이용해 해당줄이 2줄로 되있음을 나타낸다.

 

*** 파이프 형태 실습해보기

 

 

-> process1.c 파일 : Hello출력해주는 파일

 

 

-> process2.c 파일 : 문자를 입력받아 출력해주는 파일

 

 

-> process1파일을 실행하면 Hello!가 출력된다.

-> process2파일을 실행하면 입력한 안녕하세요!가 출력된다.

-> process1파일을 실행하고 파이프로 process2파일을 실행하면 process1에서 실행한 출력문 Hello가 process2파일에 입력으로 들어가서 입력의 결과 : Hello!가 출력된다.

 

*** 파이프 형태 실습해보기2

 

 

-> test_prinf.c 파일 : Hello 출력후 40초동안 대기하는 파일

 

 

-> test_scanf.c 파일 : 문자열을 입력받아 출력후 40초 동안 대기하는 파일

 

 

-> test_printf 파일을 실행하고 파이프 test_scanf 파일을 & (백그라운드) 로 실행한다.

-> ps aux | grep을 이용해 해당 프로세스 번호를 알아낸다.

-> ls -l /proc/프로세스번호/fd 를 해보면 0은 입력 1은 출력 2는 에러값을 나타내는데 test_printf의 출력이 test_scanf의 입력으로 들어가는것을 확인 할 수 있다.

-> 1571 프로세스의 출력을 1572 프로세스의 입력으로 보낸다.

-> 1571 프로세스의 입력으로 받은 내용을 출력한다.

 

==> 파이프를 사용했을때 프로세스가 어떻게 출력되고 입력되는지 확인

 

#2 리다이렉션

- 리다이렉션은 입력 리다이렉션과 출력 리다이렉션이 있다.

 

*** 출력 리다이렉션

 

 

-> Hello를 a.txt로 출력한다.

-> >>는 해당파일로 출력할때 기존의 파일내용에 추가해서 작성된다.

-> >는 해당파일로 출력시 파일이 없다면 해당파일을 만들고 파일이 있으면 해당 파일의 내용이 초기화되고 해당 단어만 출력된다.

 

*** 입력 리다이렉션

 

 

-> <<는 해당단어가 나올때 까지 계속 입력받는다. 해당 단어가 나오면 종료된다.

-> 입력받는 단어를 > 를 이용해 다시출력할 수 있다.

 

*** 파일 디스크립터 0 1 2

- 0 : 표준입력 ( stdin )

- 1 : 표준출력 ( stdout )

- 2 : 표준에러 ( stderr )

 

 

-> stdout_error.c 파일 : Hello1은 정상출력, Hello2는 정상출력, Hello3은 에러출력하는 파일이다.

 

 

-> ./stdout_error 1> a.txt를 하게되면 해당코드중 정상적인 출력을 a.txt로 출력하게된다.

-> ./stdout_error 2> b.txt를 하게되면 해당코드중 에러 출력을 b.txt로 출력하게된다.

 

Comments