Tôi có tình huống sau:Làm thế nào để gián đoạn cuộc gọi fread?
Có một chủ đề đọc từ một thiết bị có cuộc gọi fread. Cuộc gọi này đang chặn miễn là không có dữ liệu gửi từ thiết bị. Khi tôi dừng chủ đề này, nó vẫn treo trong chủ đề này.
Bây giờ tôi thấy như sau bên trong man page của fread:
LỖI
Trên tất cả các hệ thống phù hợp với các Độc UNIX Specification, các fread() chức năng đặt errno như được liệt kê cho các điều kiện sau đây: :
[EINTR] Thao tác đọc là bị chấm dứt do nhận đượcTín hiệuvà không có dữ liệu nào được chuyển.
Điều đó có nghĩa là có cách để làm gián đoạn cuộc gọi từ một chuỗi khác. Nhưng tôi không biết làm thế nào. Ai đó có thể cho tôi biết làm thế nào để gửi một tín hiệu để làm gián đoạn cuộc gọi fread? Và tôi cần gửi tín hiệu gì?
Cập nhật 08-10-10 09:25
tôi vẫn chưa nhận được nó để làm việc. Tôi đã thử kill() và pthread_kill() với các tín hiệu khác nhau. Nhưng dường như không có gì làm gián đoạn cuộc gọi fread(). Điều duy nhất mà tôi làm việc là giết chết toàn bộ ứng dụng, nhưng đó không phải là điều tôi muốn.
Thú vị rằng điều này phải làm với đồng thời: Tôi đã hiểu sai 'fread' là một chuỗi" Cockney ". –