Linux的文件I/O

int open(const char *pathname, int flags, mode_t mode);

    #include <sys/types.h>
           #include <sys/stat.h>
           #include <fcntl.h>
            参数1:要打开的文件
            参数2:打开类型,O_RDONLY,O_WRONLY, O_RDWR,O_CREAT,O_EXCL,O_TRUNC,O_APPEND
                      O_TRUNC 清空文件, CREAT | O_TRUNC 文件不存在则创建,存在则清空文件内容
                      O_EXCL 测试文件是否存在,与O_CREAT连用
            参数3:文件的权限,例如0660(八进制)
            返回值:文件描述符,非负整数, 出错返回-1

ssize_t read(int fd, void *buf, size_t count);
    #include <unistd.h>

     参数1:open成功后打开的描述符
            参数2:读文件后存放数据的buf
            参数2:buf所占的字节数
            返回值:-1 出错,0 文件结束,大于0 读到的字节数

ssize_t write(int fd, const void *buf, size_t count);
            参数1:open成功后打开的描述符
            参数2:写入文件存放数据的buf
            参数3:写入文件的字节数
            返回值:-1出错,0 未写入文件, 大于0 成功写入文件的字节数
        
 int close(int fd);
            关闭文件
            参数1:打开的文件描述符
            返回值:0 成功, -1 出错。
            
 int stat(const char *path, struct stat *buf);
            功能:获取文件信息
            参数1:文件路径
            参数2:存放文件信息结构体
            返回值: -1出错,0 成功
            #include <sys/types.h>
            #include <sys/stat.h>
            #include <unistd.h>

 //自编copy函数 1 #include <stdio.h>
 2 #include <sys/types.h>
 3 #include <sys/stat.h>
 4 #include <fcntl.h>
 5 #include <unistd.h>
 6 #include <stdlib.h>
 7 #define BUF_SIZE 12
 8
 9 int main(int argc ,char *argv[])
10 {
11        //open file
12     if(argc !=3||NULL== argv[2]||NULL== argv[1])
13     {
14         printf("please input file");
15         return -1;
16     }
17     char buf[BUF_SIZE]={0};
18
19         /*char data[]={};
20         printf("please input write data");
21         scanf("%s",data);*/
22
23         int fd1=open(argv[1],O_RDWR|O_CREAT,0664);
24         if(-1==fd1)
25         {
26                 perror("open");
27         exit(EXIT_FAILURE);
28         }
29     int fd2=open(argv[2],O_RDWR|O_CREAT|O_TRUNC,0664);
30         if(-1==fd2)
31         {
32                 perror("open");
33         exit(EXIT_FAILURE);
34         }
35         //read file
36     size_t count=BUF_SIZE;
37     int iRed=0;
38     while((iRed=read(fd1,buf,count))>0)
39     {
40         ssize_t iWrite=write(fd2,buf,iCount);
41         if ( -1 == iWrite)
42         {
43             perror ("write");
44             exit (EXIT_FAILURE);
45         }
46     }
47         //close file
48     if(-1==close(fd1))
49         {
50                 perror("close");
51         exit(EXIT_FAILURE);
52         }
53     if(-1==close(fd2))
54         {
55                 perror("close");
56         exit(EXIT_FAILURE);
57         }
58     return 0;
59
60 }
时间: 2024-08-08 13:41:36

Linux的文件I/O的相关文章

Linux的文件权限和目录配置

二.Linux的基本操作 2.1.Linux的文件权限和目录配置 2.1.1.Linux文件属性 以root身份登录后,执行“ls –al”将会出现如下内容: [[email protected] ~]# ls -al 总用量 44 dr-xr-x---. 5 root root 4096 8月   6 14:44 . dr-xr-xr-x. 17 root root 4096 7月 25 05:33 .. -rw-------. 1 root root 1426 7月 25 05:35 ana

linux下文件的复制、移动与删除

linux下文件的复制.移动与删除命令为:cp,mv,rm一.文件复制命令cp   命令格式:cp [-adfilprsu] 源文件(source) 目标文件(destination)             cp [option] source1 source2 source3 ... directory   参数说明:   -a:是指archive的意思,也说是指复制所有的目录   -d:若源文件为连接文件(link file),则复制连接文件属性而非文件本身   -f:强制(force),

Linux学习笔记四:Linux的文件搜索命令

1.文件搜索命令  which 语法:which [命令名称] 范例:$which ls  列出ls命令所在目录 [[email protected] ~]$ which ls alias ls='ls --color=auto' /bin/ls 另外一个命令:whereis [名称名称],也可以列出命令所在目录. [[email protected] ~]$ whereis ls ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/ma

linux链接文件

linux链接文件 链接有两种方式:硬链接和软链接. (一)软链接 软链接又叫做符号链接.基本命令为: [plain] view plaincopy ln -s sourcePlace newPlace 软链接可以链接任何文件或者目录,还可以链接不同文件系统的文件或者目录. 软链接的特点: 1.要建立链接时,newPlace必须是存在的:而当sourcePlace不存在时建立的连接是一个空链接,相当于空指针.空链接文件也可以操作,而且如果对空链接进行操作,比如 emptyFile是空链接,进行v

Linux 解决文件删除了但磁盘可利用率没变

昨天收到zabbix的报警邮件,有一台服务器的 /home 目录的使用率达到了90%以上,查了一下,发现MongoDB的数据文件放到这个目录下,导致磁盘使用率很高,而这个MongoDB的数据现在又都不用了,于是就直接把它的数据文件删除了,也没做其他任何操作.可是今天zabbix上却显示/home的使用率达到了96%,上去一看,发现一个奇怪的现象 明明/home目录只使用了12G  ,但是df -h却显示使用了64G ,还有52G 被谁使用了?一直差不出原因,磁盘马上就要被写满了,焦急啊! 后来在

linux修改文件和目录权限chmod

1. 文件权限简介 linux文件权限有9个,三组表示,owner, group, others,每组又包含r,w, x三种状态. 2. 根据数字修改权限 r, w, x三种权限通过数字来代表: r: 4 w: 2 x: 1 每组的权限为上面三个相加. 比如权限为; [-rwxrwx---] owner: rwx = 4 + 2 + 1 = 7 group: rwx = 4 + 2 +1 = 7 others: --- = 0 + 0 + 0 = 0 对应的权限为 770 chmod 770 t

Linux查找文件

which 可以查找可执行文件的位置 ? 1 2 [email protected]:~$ which ping /bin/ping whereis whereis -m 可查询到命令的帮助文档在什么地方 ? 1 2 3 4 [email protected]:~$ whereis -m ls ls: /usr/share/man/man1/ls.1.gz [email protected]:~$ whereis -m pwd pwd: /usr/share/man/man1/pwd.1.gz

extundelete工具恢复Linux删除文件

下载相应软件包 wget http://jaist.dl.sourceforge.net/project/e2fsprogs/e2fsprogs/1.41.14/e2fsprogs-1.41.14.tar.gz wget http://jaist.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2 wget http://jaist.dl.sourceforge.net/projec

【大话QT之五】Windows与Linux下文件操作监控的实现

一.需求分析: 随着渲染业务的不断进行,数据传输渐渐成为影响业务时间最大的因素.究其原因就是因为数据传输耗费较长的时间.于是,依托于渲染业务的网盘开发逐渐成为迫切需要解决的需求.该网盘的实现和当前市场上网盘实现有一些的不同,主要在客户端与服务器端的操作需要双向进行,即:用户在客户端的操作需要及时同步到服务器端:在服务器端作业渲染生成的文件要及时同步到客户端.即:用户不在需要单独的下载数据,而是在作业运行的同时,渲染就过就会自动同步到客户端,大大缩短了等待时间.当然,无论是在客户端还是在服务端都面

linux下文件的权限

最近搞了一批权限最小化的问题,这里专门进行一下linux下文件权限的总结,其实非常简单. 在介绍linux下文件的情况,需要先介绍一个概念,用户.用户组. 和win一样,linux也是需要用户才能登录的.不同的是在linux中,还存在一个概念:用户组.也就是当前用户所属的属组.为什么要引入这样一个看似无用的用户组呢?这主要是为了在linux下,团队协作的方便.每一个用户都有属于自己独特的权限控制.但是有时候,有一些公有的文件或文件夹,这个你也用,我也用,但是我们并不希望所有人都能用.(防盗连接: