อัปเดต: trap
ต้องลบSIG
คำนำหน้าตามเงื่อนไขแม้ว่าบางเชลล์รองรับ ดูความคิดเห็นด้านล่าง
เครื่องหมาย & "&" รันคำสั่งในพื้นหลังในกระบวนการใหม่ เมื่อกระบวนการหลักของมัน (คำสั่งที่รันสคริปต์ bash ในกรณีของคุณ) สิ้นสุดลงกระบวนการพื้นหลังนี้จะรีเซ็ตกระบวนการหลักเป็น init (ดำเนินการด้วยPID
1) แต่จะไม่ตาย เมื่อคุณกดctrl+c
คุณกำลังส่งสัญญาณขัดจังหวะไปยังกระบวนการพื้นหน้าและมันจะไม่ส่งผลกระทบต่อกระบวนการพื้นหลัง
เพื่อฆ่ากระบวนการพื้นหลังที่คุณควรใช้kill
คำสั่งกับของกระบวนการพื้นหลังล่าสุดซึ่งอาจจะได้รับจากPID
$!
หากคุณต้องการที่จะใช้ctrl+c
เพื่อฆ่าทั้งกระบวนการสคริปต์และพื้นหลังคุณสามารถทำได้:
trap 'kill $BGPID; exit' INT
sleep 1024 & # background command
BGPID=$!
sleep 1024 # foreground command of the script
trap
แก้ไขตัวจัดการกับดักของ SIGINT
( trap
ต้องการลบส่วนSIG
นำหน้า แต่เชลล์บางตัวอาจสนับสนุนรวมถึง) เพื่อให้สคริปต์จะฆ่ากระบวนการด้วย$BGPID
ก่อนที่จะออก