Truyền SIGINT qua tập lệnh bash cho ứng dụng


1

Tôi có một ứng dụng Linux, được viết bằng C ++, bẫy bẫy SIGINT để thực hiện một số dọn dẹp cuối cùng trước khi thoát. Tôi gọi ứng dụng này trong một tập lệnh bash. Bây giờ, khi tôi gõ control-C với tập lệnh bash đang chạy ở nền trước, tập lệnh sẽ chấm dứt như chương trình mà nó đã gọi nhưng không chạy mã dọn dẹp cuối cùng. Làm thế nào tôi có thể có ngắt thông qua tập lệnh bash, trực tiếp đến ứng dụng, dẫn đến việc dọn dẹp cuối cùng và sau đó là một lối thoát bình thường, sau đó làm cho chính tập lệnh thoát ra?

Câu trả lời:


1

bashcũng có khả năng bẫy SIGINT . Sẽ là khả thi để bẫy tín hiệu để tập lệnh không chết, và sau đó trong trình xử lý bẫy, sử dụng killđể truyền tín hiệu tắt cho ứng dụng của bạn.


1
#somecommand has to be a unique substring of the command being run

trap "kill -3 %?somecommand" sigint

somecommand&
wait %?somecommand
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.