2012-03-30 54 views
6

Tôi có ứng dụng (C, Linux) xử lý Ctrl-C SIGINT bằng cách tắt. Tôi muốn thêm một trình xử lý tín hiệu khác để tôi có thể sử dụng một tổ hợp phím khác cho "cấu hình tải lại khi đang chạy".Tôi có thể nắm bắt tín hiệu bàn phím nào ngoài Ctrl-C?

Vì vậy, tôi đang tìm kiếm từ một tín hiệu tôi có thể gửi cho quá trình nền trước bằng phím tắt, điều này không buộc quá trình hủy hoặc tạm ngưng. Có ai khác không?

+0

Rất giống: http://stackoverflow.com/q/6764265/371250 – ninjalj

Trả lời

8

Bạn có thể sử dụng ctrl+Z,

SIGTSTP 

Value = 20

Để biết thêm thông tin chi tiết tham khảo link này.

+0

Điều này hoạt động, cảm ơn. Tôi chưa bao giờ nghe nói về SIGTSTP. – blueshift

+0

Tốt. Chào mừng nhất. –

2

Chương trình của bạn có thể sử dụng SIGUSR1 and SIGUSR2 để làm bất cứ điều gì mình muốn, nhưng không có cách nào để gửi chúng như cách Ctrl + C gửi tín hiệu SIGINT. Bạn phải sử dụng một cái gì đó như kill(1) để gửi tín hiệu, ví dụ: kill -USR1 <mypid>.

+1

Đúng, vì vậy đó không phải là điều tôi muốn. – blueshift

+1

@blueshift Nhưng hãy nhớ rằng đó là những tín hiệu bạn đang _supposed_ để xử lý. Bằng cách thay đổi những người khác bạn đang tạo ra hành vi bất ngờ. Điều này không nhất thiết phải xấu trừ khi bạn đang phân phối chương trình. –

+0

Điểm công bằng. Nhưng đây là nội bộ duy nhất, hệ thống nhúng, không phải là một vấn đề. – blueshift

3

Bạn có thể thử Ctrl - \ đó là SIGQUIT nếu bạn hoàn toàn cần nó để trở thành một tổ hợp phím (bạn có thể bắt nó).

+0

Hoạt động, cũng như SIGTSTP. – blueshift

Các vấn đề liên quan