Search
Duplicate
🎵

so_long 게임에 bgm을 넣어보자(쉘 멀티프로세스 활용하기)

간단소개
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
Shell
42seoul
태그
multiprocess
Scrap
9 more properties
so_long 개발을 진행하다가 게임 bgm을 넣고 싶은데, 허용 가능 함수에는 없고.. 마지막 희망으로 쉘 스크립트를 뒤져보았다.
hyeonski이 해결 방법을 추천해 주셨고, 그걸 기반으로 원하는 기능을 구현해보았다.

리눅스 '&' 연산자

리눅스 환경에서 현재 사용하는 쉘이 아니라 서브쉘을 생성해 백그라운드에서 실행할 때 사용한다. 아래와 같이 명령어 뒤에 &를 붙여주면 cmd_1이 백그라운드에서 실행된다.
> cmd_1 &
Shell
백그라운드에서 실행하면 해당 프로세스의 PID를 터미널에 출력해준다.
연속해서 사용하는 경우 아래와 같이 출력된다.
서브쉘에서 실행할 명령어와 메인으로 실행할 파일을 아래와 같이 동시에 작성할 수도 있다. 메인쉘에서 실행할 파일은 뒤에 &을 빼고 실행시키면 된다.
> sub.sh & main.sh
Shell

명령어 활용하기

이제 이 방법을 활용해서 게임과 bgm을 동시에 출력되게 할 수 있다.
> afplay bgm.mp3 & ./so_long map.ber
Shell
하지만 이렇게 하니 게임이 끝날 때, 노래가 동시에 종료되지 않았다. pkill 명령을 사용해서 동작중인 afplay를 종료시키도록 해보았다.
우선 so_long이 종료되는 것을 기다려야하니 ; (세미콜론)을 활용해서 해당 명령이 종료되는 것을 기다린 후 pkill을 실행하였다.
> afplay bgm.mp3 & ./so_long map.ber ; pkill afplay
Shell
이제 bgm이 들어간 so_long을 만들 수 있다.