write() - Unix,Linux系統呼叫 - 技術教學
Tutorials Point


  Unix初學者指南
  Unix Shell程式設計
  高階Unix
  Unix有用參考
  Unix有用資源
  精選閱讀

版權所有 © 2014 tutorialspoint



  首頁     參考     討論論壇     關於TP  

write() - Unix,Linux系統呼叫


previous next AddThis Social Bookmark Button

廣告

名稱

write - 寫入檔案描述符

概要

#include <unistd.h> 

ssize_t write(int fd, const void *buf, size_t count);

描述

write() 將最多 count 個位元組從以 buf 開頭的緩衝區寫入檔案描述符 fd 引用的檔案。POSIX 要求可以證明在 write() 返回後發生的 read() 返回新資料。請注意,並非所有檔案系統都符合 POSIX 標準。

返回值

成功時,返回寫入的位元組數(零表示沒有寫入任何內容)。錯誤時,返回 -1,並且 errno 被相應地設定。

如果 count 為零且檔案描述符引用常規檔案,則可能返回 0,或者可能會檢測到錯誤。對於特殊檔案,結果不可移植。

錯誤

錯誤程式碼描述
EAGAIN 已使用 O_NONBLOCK 選擇非阻塞 I/O,並且寫入將阻塞。
EBADF fd 不是有效的檔案描述符,或者未開啟以進行寫入。
EFAULT buf 位於您可訪問的地址空間之外。
EFBIG 嘗試寫入的檔案超過了實現定義的最大檔案大小或程序的檔案大小限制,或者嘗試寫入的位置超過了允許的最大偏移量。
EINTR 在寫入任何資料之前,呼叫被訊號中斷。
EINVAL fd 附加到不適合寫入的物件;或者該檔案已使用 O_DIRECT 標誌開啟,並且 buf 中指定的地址、count 中指定的值或當前檔案偏移量未正確對齊。
EIO 修改 inode 時發生低階 I/O 錯誤。
ENOSPC 包含 fd 引用的檔案所在的裝置沒有足夠的空間存放資料。
EPIPE fd 連線到其讀取端已關閉的管道或套接字。發生這種情況時,寫入程序也將收到 SIGPIPE 訊號。(因此,只有當程式捕獲、阻塞或忽略此訊號時,才能看到寫入返回值。)

可能會發生其他錯誤,具體取決於連線到 fd 的物件。

符合標準

SVr4、4.3BSD、POSIX.1-2001。在 SVr4 下,寫入可能會被中斷並在任何時候返回 EINTR,而不僅僅是在寫入任何資料之前。

註釋

write() 的成功返回並不保證資料已寫入磁碟。事實上,在一些有缺陷的實現中,它甚至不能保證已成功為資料保留空間。唯一確定方法是在完成所有資料寫入後呼叫 fsync(2)。

參見



previous next Printer Friendly

廣告


  

廣告



廣告
© . All rights reserved.