Nếu tôi đếm trên hệ thống write() gọi để viết ví dụ, 100 byte, tôi luôn đặt lệnh write() đó vào một vòng lặp để kiểm tra xem độ dài được trả lại có phải là thứ tôi mong muốn gửi hay không, nếu không, nó bumps con trỏ đệm và giảm độ dài bằng số tiền đã được viết. Vì vậy, một lần nữa tôi chỉ làm điều này, nhưng bây giờ có StackOverflow, tôi có thể hỏi tất cả các bạn nếu mọi người biết khi nào viết của tôi sẽ viết TẤT CẢ mà tôi yêu cầu so với trả lại một phần viết?Khi nào thì hệ thống write() gọi ghi tất cả các bộ đệm được yêu cầu so với việc viết một phần?
Nhận xét bổ sung: Trả lời của X-Istence nhắc tôi rằng tôi nên lưu ý rằng bộ mô tả tệp đã chặn (tức là không chặn). Tôi nghĩ rằng anh ta gợi ý rằng cách duy nhất một write() trên một mô tả tập tin chặn sẽ không viết tất cả các dữ liệu được chỉ định là khi write() bị gián đoạn bởi một tín hiệu. Điều này dường như làm cho cảm giác ít nhất là trực quan đối với tôi ...
Để rõ ràng, trên Linux, 'errno' là _not_ được đặt khi viết ghi một số số khác không phải là byte, ngay cả khi nhỏ hơn số tiền được yêu cầu. Nó được _only_ đặt khi 0 byte được ghi. Vì vậy, nói chung bạn không thể tìm ra lý do tại sao một ghi là _partial_, nhưng nếu tình hình là dai dẳng (ví dụ, đĩa là đầy đủ), bạn sẽ tìm hiểu trên ** ** viết tiếp theo, mà sẽ thất bại với giá trị trả về '- 1' và đặt 'errno'. Đây là một [chủ đề cổ điển] (http://yarchive.net/comp/linux/partial_reads_writes.html) về lý do tại sao điều này là như vậy. – BeeOnRope