writelinux
A. linux read/write和fread/fwrite有什麼區別
read/write函數是Linux「系統調用」,Linux中系統調用相當於Windows平台API的概念,而fread/fwrite則是標准函數庫中提供的函數。相對於fread/fwrite庫函數,read/write系統調用是屬於更加底層的文件訪問,而與庫函數相比,系統調用的資源開銷要大些,這是因為系統調用更加底層而沒有緩沖機制,而且執行系統調用會馬上進行內核代碼和用戶代碼之間的切換。通常使用系統調用是讀寫大量的數據,盡量避免一次讀寫一個字元這樣的使用情況。而fread/fwrite庫函數是屬於更高層的介面,比如fwrite就提供輸出緩沖功能,所以使用fwrite函數時可以寫任意長度的數據。這就是它們的區別。
B. Linux C write函數
好隱蔽的一個錯誤!! if ((fd=open(pathname, FLAGS, MODE)==-1)) 這句,括弧的位置錯誤了
應該是: if ( (fd=open(pathname, FLAGS, MODE))==-1)
原寫法,導致fd值為0,成了標准輸入(終端)了,所以,lseek就會一直報錯!
C. linux中read,write和recv,send的區別
Linux的recv、send函數和read、write函數都可以用於套接字編程。不同的是recv、send只用於套接字通信;而read、write是底層系統調用,只要是文件操作就都可以用, 比如套接字操作,套接字描述符屬於是文件描述符的一種,套接字本身在Linux上就叫做套接字文件。所以read、write函數不光可以用於套接字編程,也可以用於讀取其他各種文件,比如用於文件編程讀寫普通文件。這就是它們之間的區別
D. Linux中,用C語言實現write命令
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
char cmd[200];
if (argc>1)
{
sprintf(cmd,"write %s",argv[1]);
system(cmd);
}
else fprintf(stderr,"ERROR!\nusage: write user [tty]\n");
return 0;
}
E. linux中read,write和recv,send的區別
Linux的recv、send函數和read、write函數都可以用於套接字編程。
區別:
1、recv、send只用於套接字通信;
2、read、write是底層系統調用,只要是文件操作就都可以用, 比如套接字操作,套接字描述符屬於是文件描述符的一種,套接字本身在Linux上就叫做套接字文件。
所以read、write函數不光可以用於套接字編程,也可以用於讀取其他各種文件,比如用於文件編程讀寫普通文件。