ฉันกำลังพยายามแยกโพรเซสจาก bash script เพื่อที่ SIGINT จะไม่ถูกส่งต่อไปยังโพรเซสเมื่อฉันออกจากสคริปท์
ฉันใช้disown
คำสั่งในเทอร์มินัลโดยตรงอย่างไรก็ตามใน bash disown
ไม่ได้หยุด SIGINT จากการถูกส่งต่อ วัตถุประสงค์ของสคริปต์นี้คือการเริ่มต้น openocd แล้ว gdb ด้วยการเรียกเพียงครั้งเดียว เนื่องจากสคริปต์ไม่เคยออก (กำลังเรียกใช้ gdb) SIGINT ยังคงถูกส่งต่อจาก gdb ไปยัง openocd ซึ่งเป็นปัญหาเนื่องจาก SIGINT ใช้เป็นคำสั่ง halt ใน gdb
ในเทอร์มินัลมันจะมีหน้าตาดังนี้:
$ openocd & # run openocd demonized
$ disown $! # disown last pid
$ gdb # invoke GDB
เมื่อเรียกใช้บนเทอร์มินัลตามลำดับนี้ SIGINT จะไม่ถูกส่งผ่านจาก gdb ไปยัง openocd อย่างไรก็ตามหากการร้องขอเดียวกันนี้อยู่ในสคริปต์ทุบตี SIGINT จะถูกส่งผ่าน
ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชมอย่างมาก.
ป.ล. ปัญหานี้อยู่ใน OS X แต่ฉันพยายามใช้เครื่องมือที่พกพาไปยังเครื่องมือ Unix ทั้งหมด
screen
หรือไม่?
nohup
ไม่ใช่คำตอบที่ถูกต้องทีเดียว คุณควรเพิ่มรหัสเทียมหรือโค้ดตัวอย่างเพื่อแสดงสิ่งที่คุณต้องการอย่างแม่นยำยิ่งขึ้น