.TH READ 9P .SH NAME read, write \- transfer data from and to a file .SH SYNOPSIS .ta \w'\fLTwrite 'u .IR size [4] .B Tread .IR tag [2] .IR fid [4] .IR offset [8] .IR count [4] .br .IR size [4] .B Rread .IR tag [2] .IR count [4] .IR data [ count ] .PP .IR size [4] .B Twrite .IR tag [2] .IR fid [4] .IR offset [8] .IR count [4] .IR data [ count ] .br .IR size [4] .B Rwrite .IR tag [2] .IR count [4] .SH DESCRIPTION The .B read request asks for .I count bytes of data from the file identified by .IR fid , which must be opened for reading, starting .I offset bytes after the beginning of the file. The bytes are returned with the .B read reply message. .PP The .I count field in the reply indicates the number of bytes returned. This may be less than the requested amount. If the .I offset field is greater than or equal to the number of bytes in the file, a count of zero will be returned. .PP For directories, .B read returns an integral number of directory entries exactly as in .B stat (see .IR stat (9P)), one for each member of the directory. The .B read request message must have .B offset equal to zero or the value of .B offset in the previous .B read on the directory, plus the number of bytes returned in the previous .BR read . In other words, seeking other than to the beginning is illegal in a directory. .PP The .B write request asks that .I count bytes of data be recorded in the file identified by .IR fid , which must be opened for writing, starting .I offset bytes after the beginning of the file. If the file is append-only, the data will be placed at the end of the file regardless of .IR offset . Directories may not be written. .PP The .B write reply records the number of bytes actually written. It is usually an error if this is not the same as requested. .PP Because 9P implementations may limit the size of individual messages, more than one message may be produced by a single .I read or .I write call. The .I iounit field returned by .IR open (9P), if non-zero, reports the maximum size that is guaranteed to be transferred atomically. .SH ENTRY POINTS .I Fsread and .I fswrite (see .MR 9pclient (3) ) generate the corresponding messages. Because they take an offset parameter, the .I fspread and .I fspwrite calls correspond more directly to the 9P messages. Although .I fsseek affects the offset, it does not generate a message.