Search
Duplicate
🎵

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

간단소개
팔만코딩경 컨트리뷰터
ContributorNotionAccount
주제 / 분류
Shell
42seoul
Scrap
태그
multiprocess
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을 만들 수 있다.