Ctrl내 스크립트는 + 키로 종료될 수 없습니다 C. 이것은 실수입니다.
Ctrl+로 종료 되도록 스크립트를 수정하는 방법을 설명해주세요 C.
#!/bin/bash
while true; do
paplay /usr/share/sounds/phone.wav
done
답변1
상위 쉘에서 SIGINT를 포착하고 쉘을 종료하면 paplay도 닫힙니다.
trap exit SIGINT;
while true; do paplay /usr/share/sounds/phone.wav ; done
paplay
INT 신호를 차단하고 이에 영향을 미치면 상위 쉘이 기본 핸들러를 실행하지 못하게 되는 것처럼 보입니다 .
상위 셸에 핸들러를 설치하고 거기에서 핸들러를 재설정하고 신호를 다시 발생시키면 더 나은 방법으로 문제를 해결할 수 있습니다.
trap 'trap - SIGINT; kill -SIGINT $$' SIGINT;
while :; do paplay /usr/share/sounds/linuxmint-login.wav ; done
(이 exit
방법을 사용하면 실행 프로그램 프로세스는 하위 프로세스가 자동으로 종료된 것으로 생각하지만, 두 번째 방법을 사용하면 스크립트가 종료된 것처럼 보입니다 SIGINT
.)
답변2
문제는 실제로 에 관한 것입니다 paplay
. 신호를 차단할 수 있습니까? 또는 (예:아치스 위키) 아마도 너무 바쁠 수도 있습니다.
sleep 1
루프에 를 넣어 스크립트를 더 쉽게 중지할 수 있습니다.