스크립트가 있습니다
$ cat PDFX.sh
#! /bin/bash
wine /home/t/pdfxcview/PDFXCview.exe
대화형 bash 셸에서 다음을 실행합니다.
$ ./PDFX.sh &
[1] 21740
그럼 죽여보려고 해
$ kill $(jobs -p)
[1]+ Terminated ./PDFX.sh
"종료됨"이 표시되지만 프로그램은 PDFXCview.exe
영향을 받지 않고 계속 실행 중이며 셸을 종료한 후에도 살아남을 수 있습니다.
$ exit
wine /home/t/pdfxcview/PDFXCview.exe
스크립트를 교체하면 명령 및 쉘 종료가 유지evince
되지 않습니다 .kill
wine /home/t/pdfxcview/PDFXCview.exe &
대화형 bash 셸에서 직접 실행 하면kill
명령 및 셸 종료가 유지되지 않습니다.
왜 차이가 나는지 알고 싶습니다.
나는 그것에 대해 특별한 것이 없다고 생각합니다 wine
.
답변1
달리기
wine /home/t/pdfxcview/PDFXCview.exe
explorer.exe
일반적으로 Windows 바이너리( 등) 에서 예상하는 일반적인 Windows 환경을 제공하기 위해 여러 프로세스가 시작됩니다 . Wine은 이러한 모든 프로세스를 시작 wineserver
하고 모두 분리함으로써 이를 수행합니다. 따라서 해당 프로세스는 쉘 또는 심지어 쉘의 하위 프로세스가 아닙니다 wineserver
. Wine에게 실행을 요청한 바이너리는 셸의 하위 프로세스일 수 있지만 상위 프로세스보다 오래 지속될 수 있다는 점도 거부되었습니다. 이러한 모든 프로세스를 시작한 셸을 종료해도 영향을 받지 않습니다.
Windows 프로그램을 종료하려면 해당 프로그램의 pid를 찾아 직접 종료해야 합니다. 당신은 죽일 수 있습니다모두와인 가공 과정에서는 wineserver -k
.
를 실행하면 PDFX.sh &
스크립트를 처리하기 위해 새 셸이 시작되고 해당 셸은 Wine을 실행하여 부팅됩니다 PDFXCview.exe
. 을 실행하면 kill %1
Wine 프로세스가 아닌 스크립트를 실행 중인 셸이 종료됩니다. Wine 프로세스는 계속 실행됩니다(pid 1로 변경됨).
을 실행하면 wine /home/t/pdfxcview/PDFXCview.exe &
Wine 프로세스가 직접 시작됩니다. 나중에 실행하면 kill %1
Wine 프로세스가 종료되어 Windows 프로그램이 중지됩니다. 실행 중인 다른 Windows 프로그램이 없으면 wineserver
즉시 종료하십시오.