linu学习笔记(四):write,read函数

原创 2016年05月30日 23:08:18

先上一段代码:

#include<string.h>
#include<stdio.h>
#include<sys/types.h>
#include<fcntl.h>
#include<unistd.h>
#include<error.h>
#include<stdlib.h>
/*自定义的错误处理函数*/
void my_err(const char *err_string,int line)
{
    fprintf(stderr,"line:%d ",line);//stderr 输出到标准显示设备
    perror(err_string);             //打印错误信息
    exit(1);
}
/*自定义的读数据函数*/
int my_read(int fd)
{
    int len;
    int ret;
    int i;
    char read_buf[64];                           //定义一个字符数组用来当做缓冲
   /*获取文件长度并保持文件读写指针在文件开始处*/
    if(lseek(fd,0,SEEK_END)==-1){                //移动到文件尾部
	my_err("lseek",__LINE__);
    }
    if((len=lseek(fd,0,SEEK_CUR))==-1) {         //获取文件当前的偏移相对于文件开头
        my_err("lseek",__LINE__);
    }
    if((lseek(fd,0,SEEK_SET))==-1) {             //移动到文件开头
        my_err("read",__LINE__);
    }
    printf("len:%d\n",len);
    /*读数据*/
    if((ret=read(fd,read_buf,len))==-1){
	my_err("read",__LINE__);
    }
    /*打印数据*/ 
    for(i=0;i<len;i++){
	printf("%c",read_buf[i]);
    }
    printf("\n");
    return ret;
}

int main()
{
    int fd;
    char write_buf[32] ="hellow world";
    /*在当前目录下创建文件example_63.c*/
    //if((fd=creat("example_63.c",S_IRWXU))==-1){                             
    if((fd=open("example_63.c",O_RDWR|O_CREAT|O_TRUNC,S_IRWXU))==-1){    //创建一个可读写的文件 如果这个文件存在则把内容清空 清空的参数是
	my_err("open",__LINE__);                                         //O_TRUNC ,S__IRWXU是设置用户操作文件的权限。
    }else{
        printf("creat file success\n");
    }
    /*写数据*/
    if(write(fd,write_buf,strlen(write_buf))!=strlen(write_buf)){    //如果写入数据不等于原来数据的长度则打印错误信息
        my_err("write",__LINE__);
    }
    my_read(fd);                                                       //调用读取函数读取数据这个行应该是删除多打了一行
    /*演示文稿*/
    printf("/*-------------------------*/\n");
    if(lseek(fd,10,SEEK_END)==-1){
	my_err("write",__LINE__);
    }
    my_read(fd);
    close(fd);
    return 0;
}
两个子函数一个用来处理错误主要调用perror()这个函数,这个函数之前笔记应该学过英文解说:The  perror()  function produces a message on standard error describing the last error encountered during a call to a system or  library  function.主要用于对上次调用系统或者库函数出错时的错误描述首先先打印括号中的字符然后才是错误的内容。

第二个子函数是用来读数据的,其中有个__LINE__参数是用来打印当前行号的,当运行出错时会很方便的显示出当前错误代码的行号。关于代码的解释放在代码注释中

 

版权声明:欢迎交流,共同进步!

相关文章推荐

Linux C编程学习笔记(3):read、write、lseek函数及文件读写和文件读写指针的移动操作

read函数: 1.原型:   #include   ssize_t read(int fd, void *buf,size_t count); 2.功能:   从打开的设备或文件中读取数...

Linu学习笔记之——变量、环境变量

摘要:主要记录一些关于变量、环境变量的概念、还有子程序、以及个人设置文件的加载顺序。注意掌握两个重要命令:export和source( . )。关键在于理清变量与其所在环境之间的关系。

Linu学习笔记之——Linux 用户、用户组的相关操作

摘要:主要介绍关于Linux的用户的、添加、修改、删除。用户组的新增、修改、删除操作和一些特殊情况。以及用户和用户组之间的操作。

关于系统调用open,write,read,close及库函数fopen,fwrite,fread,fclose的使用

一、系统调用 1、write #include size_t write(int fildes , const void *buf , size_t nbytes); 函数说明 write()...

用系统函数read和write写cp命令的注意细节

#include #include #include #include #include #include int main(int argc,char *argv[]) { int ...

mips中的read、write、ioremap、out、in函数

一、我们在驱动里面一般是这样访问寄存器的(以龙芯1b-linux-3.1内核为例): __raw_writel(__raw_readl(LS1X_INTC_INTCLR(n)) | (1 #de...

linux系统编程之基础必备(七):read/write函数与(非)阻塞I/O的概念

一、read/write 函数 read函数从打开的设备或文件中读取数据。 #include ssize_t read(int fd, void *buf, size_t count); 返回值:...

unix环境高级编程之 read与write 函数详解

学习记录:unix环境高级编程之 read 与write  函数详解 备注:本博文非本人所写,本人觉得此文讲的非常地道通俗易懂,所以摘录在此以方便以后再次查看 re...

open/read/write和fopen/fread/fwrite函数的区别

http://blog.csdn.net/hxg130435477/article/details/7832648 open:系统调用,返回的是文件描述符,即文件句柄,是文件在文件描述副...

linux文件设备与I/O:read/write函数与阻塞 Block

一,read 函数从打开的设备或文件中读取数据 #include        ssize_t read(int fd, void *buf, size_t count);     ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)