`
deepfuture
  • 浏览: 4398064 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:80056
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:69999
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:103295
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:285634
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:15001
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:67498
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:32099
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:45965
社区版块
存档分类
最新评论

LINUX-C-read和write

阅读更多

读函数read 
ssize_t read(int fd,void *buf,size_t nbyte) 
read函数是负责从fd中读取内容.成功时,read返回实际所读的字节数,如果返回的值是0,表示已经读到文件的结束了.
小于0表示出现了错误.如果错误为EINTR说明读是由中断引起的, 如果是ECONNREST表示网络连接出了问题.
写函数write 
ssize_t write(int fd,const void *buf,size_t nbytes)
write函数将buf中的nbytes字节内容写入文件描述符fd.成功时返回写的字节数.失败时返回-1. 并设置errno变量. 在网络程序中,当我们向套接字文件描述符写时有俩种可能. 
1)write的返回值大于0,表示写了部分或者是全部的数据. 
2)返回的值小于0,此时出现了错误.我们要根据错误类型来处理.  如果错误为EINTR表示在写的时候出现了中断错误. 
如果为EPIPE表示网络连接出现了问题(对方已经关闭了连接).
3)nbytes可以大于实际能写入的大小,比如,缓冲区只能写入100,但却写入1000,前100个字节能写入成功。可利用这个特性加上移动指针反复写入

4)

分享到:
评论

相关推荐

    util-linux-ng-2.17源码(含fdisk)

    util-linux-ng-2.17.2/shlibs/blkid/src/read.c [code] util-linux-ng-2.17.2/shlibs/blkid/src/resolve.c [code] util-linux-ng-2.17.2/shlibs/blkid/src/save.c [code] util-linux-ng-2.17.2/shlibs/blkid/src/...

    Linux-C语言编程宝典.rar_C语言_LINUX c++ 编程_linux_linux c++_linux 编程

    例如,如何使用`open()`、`read()`、`write()`函数进行文件操作,如何运用`fork()`、`exec()`、`wait()`进行进程管理,以及如何利用`malloc()`、`calloc()`、`free()`进行内存分配和释放。 再者,书中可能还会涉及...

    linux-c.zip_C语言_Linux C语言_linux_linux-c

    常见的系统调用包括:`fork`用于创建进程,`exec`系列用于执行新程序,`wait`和`waitpid`用于等待子进程结束,`open`、`close`、`read`和`write`用于文件操作,以及`pipe`和`socket`用于进程间通信。理解并熟练运用...

    linux-c-api-ref.zip_linux api_linux-c-api-ref

    2. **文件I/O**:Linux中的文件操作是基于文件描述符的,`open()`函数用于打开文件并返回一个描述符,`read()`和`write()`则通过这个描述符读写数据。此外,还有`close()`用于关闭文件,`lseek()`改变文件读写位置,...

    Linux-c课件

    - C语言可以直接调用Linux内核提供的接口,即系统调用,如open、close、read、write等。 - 系统调用是C程序与操作系统交互的主要途径。 8. **内存管理** - malloc()和free()用于动态分配和释放内存。 - 内存...

    linux-c-develop.rar

    5. **系统调用**:Linux提供了一系列系统调用接口,如`fork`创建子进程,`execve`执行新的程序,`open`和`close`文件操作,`read`和`write`从文件描述符读写数据,`waitpid`等待子进程结束等。 6. **信号处理**:在...

    linux-sys.zh

    - I/O缓冲区:C标准函数通常自带缓冲机制,而系统函数如`write`、`read`等则不带缓冲。 - 效率:直接调用系统函数可能更高效,尤其是在需要精细控制缓冲策略时。 - 程序的跨平台性:C标准函数更易于实现跨平台...

    Linux-0.11内核源代码

    在`syscalls.c`中,可以看到各种系统调用的实现,如`open`, `read`, `write`等。 8. **编译与调试**:学习如何构建和调试内核源码也是很重要的实践。通过`Makefile`和`config.*`文件,我们可以了解配置、编译和调试...

    嵌入式linux c语言实现MDIO控制,修改交叉编译,实现MDIO指令自定义

    嵌入式linux c语言实现MDIO控制,修改交叉编译,实现MDIO指令自定义 mdio使用, mdio read 0 1 第一个0是PHY的广播地址,第二个是PHY的地址1 mdio eth0 write 0 0 0x12 第一个是phy地址0,这个需要从设备树中找到phy...

    linux-adc-key驱动.rar

    4. **Linux内核接口**:了解`struct adc_t`结构体和相关函数,如`probe`、`read`、`write`等,这些都是构建ADC驱动的基础。 5. **中断处理**:如果驱动中涉及中断处理,需要理解中断请求(IRQ)的处理流程和注册中断...

    linux-sys.zh 邢文鹏课件

    5. 文件I/O操作:这是Linux系统编程的重要部分,包括文件的打开、关闭(open/close)、读写(read/write)、阻塞与非阻塞操作、文件位置操作(lseek)以及文件控制(fcntl)和IO控制(ioctl)。文件描述符和最大打开...

    linux-c-man.rar_linux man

    这份名为"linux-c-man.rar_linux man"的压缩包文件提供了一份全面的Linux C函数库参考手册,对于理解和使用Linux系统中的C语言编程具有极大的帮助。 Linux Man页面(Manual pages)是Linux系统中为命令、系统调用、...

    C语言 util-linux-2.39.1.zip

    - 使用标准C库和Linux系统调用,如`open`, `read`, `write`, `fork`, `execve`等,实现与硬件和内核的直接通信。 - 利用C语言的结构体和指针,对内存管理和数据结构进行精确控制,以实现复杂的功能。 4. **学习和...

    Linux-C-function-user.rar_linux user

    这份名为"Linux-C-function-user.rar_linux user"的压缩包提供了一个关于Linux环境下C语言函数使用的详细手册,特别适合C和C++开发者参考。其中包含的"Linux-C-function-user.chm"文件是一个CHM(Compiled HTML Help...

    linux-c编程linux-c编程

    - **文件读写**: `read()`/`write()`。 - **文件定位**: `lseek()`用于改变文件位置指针。 - **文件属性**: `stat()`获取文件状态信息。 #### 四、时间概念 - **系统时间**: 获取当前系统时间(`time()`/`...

    Linux-C-fun.zip_Fun_ Fun_ Fun

    例如,`fork()`用于创建新的进程,`write()`和`read()`用于文件和设备的输入输出,`open()`和`close()`用于打开和关闭文件,`malloc()`和`free()`则用于内存管理。系统调用是理解Linux内核工作原理的关键,也是编写...

    bacnet4linux-0.3.12

    10. **API和库文件**: Bacnet4Linux-0.3.12可能提供C语言API,供开发者在自己的应用程序中集成BACnet功能。库文件可能包括`libbacnet.a`或`libbacnet.so`,用于链接到BACnet服务。 了解这些知识点后,开发者可以...

    Linux-C.rar_linux txt

    7. **Linux系统调用**:C语言可以直接调用Linux内核提供的系统调用,如`open()`、`read()`、`write()`、`close()`等。更深入地,了解`syscalls.h`头文件中定义的系统调用列表,有助于进行更底层的编程。 8. **实例...

    linux-socket-C-S.rar_C/S linux_linux c 串口_linux socket_linux 串口C

    3. **读写操作**:使用`read()`和`write()`函数进行串口数据的收发。由于串口通信同步性较低,需考虑阻塞和非阻塞模式,以及超时设置。 4. **信号处理**:处理中断和错误信号,确保程序的健壮性。 5. **多线程或...

    Linux-C-function-参考手册

    这份"Linux-C-function-参考手册"提供了一套全面的指南,旨在帮助Linux编程者掌握C语言库中的函数,提升他们的编程效率和代码质量。下面,我们将深入探讨这个手册中可能涵盖的关键知识点。 1. **标准库函数**: - ...

Global site tag (gtag.js) - Google Analytics