十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
返回-1的時候,要根據(jù)錯誤碼來判斷原因,請看下面的函數(shù)說明:

專注于為中小企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)伊美免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了近千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
表頭文件 #includeunistd.h
定義函數(shù) ssize_t read(int fd,void * buf ,size_t count);
函數(shù)說明 read()會把參數(shù)fd 所指的文件傳送count個字節(jié)到buf指針所指的內(nèi)存中。若參數(shù)count為0,則read()不會有作用并返回0。返回值為實際讀取到的字節(jié)數(shù),如果返回0,表示已到達文件尾或是無可讀取的數(shù)據(jù),此外文件讀寫位置會隨讀取到的字節(jié)移動。
附加說明 如果順利read()會返回實際讀到的字節(jié)數(shù),最好能將返回值與參數(shù)count 作比較,若返回的字節(jié)數(shù)比要求讀取的字節(jié)數(shù)少,則有可能讀到了文件尾、從管道(pipe)或終端機讀取,或者是read()被信號中斷了讀取動作。當有錯誤發(fā)生時則返回-1,錯誤代碼存入errno中,而文件讀寫位置則無法預(yù)期。
錯誤代碼 EINTR 此調(diào)用被信號所中斷。 EAGAIN 當使用不可阻斷I/O 時(O_NONBLOCK),若無數(shù)據(jù)可讀取則返回此值。 EBADF 參數(shù)fd 非有效的文件描述詞,或該文件已關(guān)閉。
write/read,是關(guān)于寫特定的文件描述符使用的比較底層的系統(tǒng)調(diào)用,
sendto/recvfrom適用于用udp(數(shù)據(jù)包)方式的套接字中使用的,
其他的沒見過,我是學linux編程的
Windows下的socket和Linux下的socket是不一樣的,我沒有查到sendmsg/recvmsg這個方法,上面的鏈接是一個類似的函數(shù),它和send/recv 的區(qū)別是,這個函數(shù)可以發(fā)送socket控制信息,看API就知道。
另外我也沒有看到有write/read函數(shù)。 sendto/recvfrom用于UDP鏈接,send/recv用于TCP鏈接。
你列舉的其余函數(shù),我都沒找到。下面的API地址供樓主查詢驗證。
1.糾正:
read和write是UNIX或者一些類UNIX系統(tǒng),比如LINUX系統(tǒng)中使用的,稱為LINUX系統(tǒng)函數(shù)。這種函數(shù)只能在特定的操作系統(tǒng)下使用,可移植性差。
fread和fwrite是C庫函數(shù)。這種函數(shù)基本在任何操作系統(tǒng)都能使用,可移植性高。
2.基礎(chǔ)知識介紹
只介紹LINUX系統(tǒng)函數(shù),常用的有creat,open,close,read,write,lseek,access,一般用于文件編程
3.如何使用
談到如何使用就必須說到另一個知識,文件描述符(file
description),是一個非負數(shù)。
函數(shù)原型:
int
read(int
fd,
const
void
*buf,
size_t
length)
功能:
從文件描述符fd所指向的文件中讀取length個字節(jié)到buf所指向的緩存區(qū)中,返回值為實際讀取的字節(jié)數(shù)
int
write(int
fd,
const
void
*buf,
size_t
length)
功能:
把length個字節(jié)從buf所指向的緩存區(qū)中寫到件描述符fd所指向的文件中,返回值為實際寫入的字節(jié)數(shù)
例子:
#define
LENGTH
1024
#define BUFFES_SIZE
1024
int
n1,
n2;
int
fd1,
fd2;
int
buffer[BUFFES_SIZE];
fd1
=
open(
"HEllo1.txt",
O_RDWR
|
O_CREAT,
O_IRUSE
|
O_IWUSR);
fd2
=
open(
"HEllo2.txt",
O_RDWR
|
O_CREAT,
O_IRUSE
|
O_IWUSR);
n1 =
read(
fd1,
buffer, LENGTH);
n2 =
write(
fd2,
buffer, n1);
好了累死了,答案完全原創(chuàng),希望對你有幫助