linux中read,write和recv,send的区别

linux中read,write和recv,send的区别,第1张

Linux的recv、send函数和read、write函数都可以用于套接字编程。

区别:

1、recv、send只用于套接字通信;

2、read、write是底层系统调用,只要是文件 *** 作就都可以用, 比如套接字 *** 作,套接字描述符属于是文件描述符的一种,套接字本身在Linux上就叫做套接字文件。

所以read、write函数不光可以用于套接字编程,也可以用于读取其他各种文件,比如用于文件编程读写普通文件。

Writeln是输出语句,输出语句有三种格式:

① Write (输出项1,输出项2) ; {执行输出后光标不换行}

② Writeln (输出项1,输出项2) ; {执行输出后光标换到下一行}

③ Writeln {仅输出空白且光标换到下一行}

Writeln语句后面的圆括号以内部分均为输出项,可以是多项,各项间用逗号分隔; 对单引号里的内容按照引号内的原样(字符)输出显示。如果输出项是表达式,则只输出表达式的值,而不是表达式本身。

Readln是一个特殊的输入语句,要求输入一个回车(换行)才能往下执行。

Readln是输入语句,它的一般格式为:

① Read (变量1,变量2);

② Readln (变量1,变量2);

③ Readln

前两种格式均要从键盘给变量输入数据,输入时,所键入的数据之间以空格为分隔,以回车为输入结束。若多输入了数据(即数据个数超过变量个数),Read语句读完数据之后,能让后续的读语句接着读取多下来的数据;而Readln 语句对本行多输入的数据不能让后续语句接着读取多下来的数据。为了防止多输入的数据影响下一个输入语句读取数据,建议尽量使用Readln语句输入数据。第三种格式不需输入数据,只需按入一个回车键。

好隐蔽的一个错误!! if ((fd=open(pathname, FLAGS, MODE)==-1)) 这句,括号的位置错误了

应该是: if ( (fd=open(pathname, FLAGS, MODE))==-1)

原写法,导致fd值为0,成了标准输入(终端)了,所以,lseek就会一直报错!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7412351.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存