%20%EC%B0%A8%EB%8B%A8%20%EB%AA%A8%EB%93%9C%EC%97%90%EC%84%9C%20%EC%9D%B4%EB%AF%B8%20%EC%8B%A4%ED%96%89%20%EC%A4%91%EC%9D%B8%20%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98%EC%9D%98%20%EC%9D%B8%EC%8A%A4%ED%84%B4%EC%8A%A4%EB%A5%BC%20%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
제가 Firefox를 사용하지만 다른 응용 프로그램에서도 이런 현상이 발생한다는 점을 설명하기 위해 스크립트는 다음과 같습니다.
$ cat ff.sh
#!/bin/sh
firefox http://superuser.com/
echo "$?"
Firefox가 닫혀 있다고 가정하고 실행하면
$ ./ff.sh
Firefox를 닫을 때까지 스크립트가 차단됩니다. 그 후에야 종료 코드를 얻습니다.
0
$
이제 Firefox가 이미 실행 중이라고 가정해 보겠습니다. 스크립트를 실행하면 새 Firefox 탭이 열리고 끝까지 실행됩니다. (그리고 Firefox는 계속 실행됩니다.)
$ ./ff.sh
0
$
시작 조건에 관계없이 동작이 첫 번째 예와 동일하도록 하려면 어떻게 해야 합니까? 기본적으로 나는 그 반대를 달성하고 싶습니다.
$ cmd &
답변1
비동기적으로 실행된 것처럼 보이지만 실제로는 그렇지 않았습니다.
Firefox가 시작되면 기존 인스턴스를 확인하고, 발견되면 기존 인스턴스에 제어를 위임하고 자체적으로 종료됩니다. 따라서 혼란이 있습니다.