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函数不光可以用于套接字编程,也可以用于读取其他各种文件,比如用于文件编程读写普通文件。