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을 만들 수 있다.