Tôi đang cố gắng tách một quy trình khỏi tập lệnh bash để SIGINT sẽ không được chuyển tiếp đến quy trình khi tôi thoát tập lệnh.
Tôi đã sử dụng disown
lệnh trong thiết bị đầu cuối trực tiếp, tuy nhiên trong bash, disown
không ngăn SIGINT được chuyển tiếp. Mục đích của tập lệnh này là bắt đầu openocd và sau đó gdb với một lệnh gọi duy nhất. Vì tập lệnh không bao giờ thoát (nó đang chạy gdb) nên SIGINT vẫn được chuyển tiếp từ gdb sang openocd, đây là một vấn đề vì SIGINT được sử dụng làm lệnh tạm dừng trong gdb.
Trong thiết bị đầu cuối, nó sẽ trông giống như thế này:
$ openocd & # run openocd demonized
$ disown $! # disown last pid
$ gdb # invoke GDB
khi được gọi trên terminal theo thứ tự này, SIGINT không được truyền từ gdb sang openocd. Tuy nhiên, nếu lời gọi tương tự này nằm trong tập lệnh bash, SIGINT được thông qua.
Mọi sự trợ giúp sẽ rất được trân trọng.
Vấn đề này là ở OS X nhưng tôi đang cố gắng sử dụng các công cụ cũng có thể mang theo cho tất cả các công cụ Unix.
screen
nào?
nohup
không phải là câu trả lời đúng Bạn nên thêm một số mã giả hoặc mã ví dụ để hiển thị chính xác hơn những gì bạn muốn.