2012-10-18 31 views
8

Tôi đang viết một chương trình đơn giản trong đó quá trình cha mẹ và con được in xen kẽ vào một tệp. Tôi đã quản lý để làm điều này bằng cách sử dụng tín hiệu do người dùng xác định. Bây giờ tôi muốn xử lý tín hiệu SIGINT. Sau khi ctrl-c được nhận, cha mẹ phải gửi tín hiệu chấm dứt cho con, sau đó con nên chấm dứt và cuối cùng là cha mẹ nên chấm dứt.Bỏ qua tín hiệu SIGINT trong quá trình con

Câu hỏi của tôi là, để thực hiện công việc này một cách chính xác, tôi chỉ phải nhận được tín hiệu SIGINT từ cha mẹ và KHÔNG BẮT ĐẦU từ con. Đúng không? Nếu có bất kỳ gợi ý nào về việc này?

+0

Bạn có thể thấy điều này thú vị: http://www.linuxprogrammingblog.com/all-about-linux-signals –

Trả lời

14

Gọi:

signal(SIGINT, SIG_IGN); 

từ quá trình đứa trẻ mà sẽ làm cho quá trình con bỏ qua các tín hiệu SIGINT. Từ man signal:

Nếu bố cục được đặt thành SIG_IGN, thì tín hiệu sẽ bị bỏ qua.

+0

Ok tôi biết hành động SIG_IGN, nhưng tôi muốn CHỈ con bỏ qua điều đó và khi phụ huynh bắt tín hiệu, chấm dứt đứa trẻ. – SpyrosR

+0

@SpyrosR, vì vậy chỉ có đứa trẻ gọi nó? – hmjd

+0

Có.I đã thiết lập hai chức năng xử lý, một cho cha mẹ để bắt tín hiệu và gửi tín hiệu SITERM cho trẻ em và một cho trẻ em bỏ qua tín hiệu nhưng tôi không thể làm cho nó hoạt động.Nếu ví dụ nhấn ctrl-c trong khi con là "làm việc "nó gọi chức năng xử lý con nhưng nó cũng gọi hàm xử lý cha mẹ cho tín hiệu SIGINT. – SpyrosR

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