mkfifo를 이용한 IPC
mkfifo를 이용한 IPC
DevOps
mkfifo를 이용한 IPC
mkfifo를 이용한 IPC
mkfifo 명령어는 리눅스 시스템에서 FIFO(First In, First Out) 파일을 생성하는 데 사용됩니다. FIFO는 프로세스 간 통신을 위한 특별한 파일 유형으로, 한 프로세스가 데이터를 쓰면 다른 프로세스가 그 데이터를 읽을 수 있습니다.
FIFO 파일 생성 및 IPC 테스트
mkfifo
명령을 FIFO 파일을 생성합니다. pipe
라는 이름으로 FIFO 파일을 생성했습니다.
mkfifo pipe
이제 pipe
파일을 사용해서 프로세스간 통신을 구현할 수 있습니다. 한 프로세스에서 데이터를 쓰고 다른 프로세스에서 데이터를 읽을 수 있습니다. 새로운 터미널을 생성하고 각 터미널에서 아래의 명령을 수행합니다.
# 터미널 1
echo "Hello" > pipe
# 터미널 2
cat pipe
Hello
터미널 2번에서 다른 프로세스에서 전달한 Hello
를 확인할 수 있습니다.
생성한 파이프를 이용해서 명령어 수행하기
터미널 2번에서 전달받은 명령을 실행하는 연습을 합니다. ls
명령을 파이프를 이용하여 다른 프로세스로 전달하고 명령을 실행합니다.
# 터미널 1
echo "ls" > pipe
# 터미널 2
eval "$(cat pipe)"
README.md pipe
명령을 전달받은 프로세스에서는 eval
을 사용하여 명령을 수행합니다. 다른 프로세스에서 전달된 ls
명령이 실행됩니다.
파이프에 전달받은 명령을 계속 읽기
명령을 읽어서 실행하는 과정을 계속 진행할 수 있도록 while
을 사용합니다.
# 터미널 1
echo "ls -al" > pipe
# 터미널 2
while true; do eval "$(cat pipe)"; done
drwxr-xr-x 6 root root 4096 11월 15 23:04 .
drwxr-xr-x 4 root root 4096 11월 13 23:48 ..
-rw-r--r-- 1 root root 14 11월 13 23:43 README.md
prw-r--r-- 1 root root 0 11월 15 23:06 pipe
터미널 2에서 전달 받은 ls -al
명령이 실행됩니다. 실행 결과를 파일로 저장하기 위해서 아래의 명령을 사용할 수 있습니다.
while true; do eval "$(cat pipe)" &> result.log; done
이제 명령을 전달하면 실행결과가 result.log
파일에 저장됩니다.
References
- https://young-cow.tistory.com/79
Date | Title | Author |
---|---|---|
Jan 1, 3000 | 전체 카테고리 | |
Mar 20, 2025 | 우분투(Ubuntu)에서 ngrok 설치 및 사용 방법 | |
Feb 4, 2025 | Windows 11에서 WSL 설치 및 Docker 연결하기 | |
Oct 7, 2024 | Docker Compose로 Jenkins 설치 및 사용하기 | |
Aug 23, 2024 | 우분투(Ubuntu)에서 특정 폴더를 아파치 서버로 설정하기 | |
Jul 24, 2024 | GitHub Actions 시작하기 | |
Dec 31, 2023 | 우분투와 윈도우 파일 공유하기 (samba) | |
Dec 5, 2023 | crontab을 이용해서 Let’s Encrypt SSL 인증서 자동갱신 | |
Nov 27, 2023 | 우분투 docker, docker-compse 설치 | |
Nov 26, 2023 | AWS 호스팅 EC2 와 Lightsail의 차이 | |
Nov 20, 2023 | wsl 이미지 저장 위치 변경 및 백업 | |
Nov 20, 2023 | airflow postgresoperator 사용하기 | |
Nov 18, 2023 | docker-compose로 airflow 설치하기 | |
Nov 15, 2023 | wsl2에 docker 설치하기 | |
Oct 9, 2023 | Github Pull Request 템플릿 적용하기 |
No matching items