系统调用-文件访问

本文特色,该文件操作与linux操作系统shell命令对比讲解!

Linux中文件变成可以使用两种方法

1.Linux的系统调用

2.C语言函数的调用

前者是依赖于操作系统的

后者是c库函数一般不会变,在哪系统下都一样。

 一、文件的创建

linux操作系统shell创建文件     #mkdir doc1 doc2

int creat(const char *filenme, mode_mode)

* filename 为要创建的文件名

* mode:创建模式

一般创建的是在本文件路径下

如果你之前玩过linux操作系统,你就会明白:chmod 777 filename 的意义

常见的创建属性为:

S_IRUSR   4    可读

S_IWUSR   2    可写

S_IXUSR   1    可执行

S_IXWRU   7    可写读执行

/************具体代码实现****************/

#include<stdio.h>

#include<sys/types.h>

#include<sys/stat.h>     //后续要用到exit()函数;

#include<fcntl.h>

void create_file(char *filename)

{

If(creat(filename,0755)<0){  //在这里表示已经执行了系统create函数,小于零表示创建文件不成功;  0755 代表权限一般为root user other访问文件权限

printf(“creat file %s failure\n”,filename)

exit(EXIT_FAILURE);

}else{

printf(“reate file % success!\n”,filename);

}

}

Int main(int argc,char *argv[]){ //argc文件参数,以前真的不知道这是啥意思,现在知道了,参数个数 第二个表示储存名字的数组;

Int i;

If(argc<2){   //表示参数只有一个,在这里只要明白创建文件,至少要两个参数就可以了.

Perror(“you haven’t input the filename,lease tryagain !\n”);

exit (EXIT_FAILURE);

}

For (i=1;i<argc;i++){

Creat_file(argv[i]);  //第一个rgv[1]用来放命令.]第二个参数(文件名)放在argv[2],

}

Exit(EXIT_SUCCESS);

)

}

二、系统调用_打开文件

linux操作系统shell文件打开     #cd doc1    #vi less more cat     doc1

实际上还是调用了以下函数进行实现

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

参数O_CREATE参数,如果没有文件就独立创建一个文件;

#include<stdio.h>

#include<stdlib.h>

#include<sys/types.h>

#include<sys/stat.h>

#include<fcntl.h>

Int main(int argc,char *argv[])

Int fd;

If(argc<2){

Puts(“please input the open file pathname!\n”);

Exit(1);

//参数一是文件路径,也就是文件名,第二个打开后可对其操作属性,如果没有就创建一个文件

If(fd=open(argv[1],o_creat,|O_RDWR,0755))<0){

Perror(“open file filure !\n”);

Exit(1);

}

Elae{

Printf(“open file %d sucess!\n”,fd);

}

Close (fd);

Exit(0);

}

}

三、系统调用_关闭

系统打开后会返回一个整数,也就是文件描述符,fd.

Int close(fd);

:wd    退出shell并保存文件

 

四、系统调用_读

Int read(int fd ,const void *buf,size_tlength)

功能:

从文件描述符fd所指定的文件中读取,也就是说在每次系统读取文件内容的时候要先打开文件,然后根据  fd 处开  始读文件。读多少个自己length 加载到buf所指向的缓冲区中。

返回值为实际的读取的字节数。

Int write(int fd,const void*buf,size_t length)

Fd指向的文件中写入buff中length个字节。

五、系统文件调用—定位

Int lseek(int fd,offset_t offset,int whence)

功能:

将文件读写的指针相对whence移动offset个字节。操作成功,返回指针相对于文件头的为位置。

系统调用—访问判断

有时候我们需要判断文件是否可进行某项操作读写等,这时我们可以使用acces函数。

Int access(const char*pathname,int mode)

Mode: R_ok

W_ok

X_ok

F_ok

返回值,测试成功返回0,不符合返回-1;

转载于:https://blog.51cto.com/godwithme/1907917

系统调用-文件访问 创建、打开、关闭、读、写相关推荐

  1. 史上最全面的UE4 文件操作,打开,读、写,增、删、改、查

    一.前期操作 创建一个C++项目,并且创建一个C++蓝图库函数,并且加入头文件 #include "HAL/PlatformFilemanager.h" #include &quo ...

  2. golang文件操作:打开关闭文件,带缓冲区的读文件

  3. C文件访问 introduce

    C文件读写.都忘记怎么操作了,记一下.下面这个程序从一个文件读入数据,写入到另一个文件中.stdin与FILE类型是区别:(stdin是指向FILE类型的指针,而FILE是_IO_FILE类型), # ...

  4. C语言文件操作(一) —— 认识文件的打开/关闭(fopen / fclose)

            目录 1.初步理解打开文件 2.打开/关闭文件的函数 (1) fopen函数 (2) fclose 函数 3.fopen函数的使用 1.初步理解打开文件 站在系统的角度,每个文件被打开 ...

  5. mac 修改文件权限为777可读可写可执行

    1,找到要修改的文件夹 2,sudo chmod -R 777 文件夹名. 3,输入管理员密码 chmod是更改文件的权限 chown是改改文件的属主与属组 chgrp只是更改文件的属组. 一.文件权 ...

  6. Numpy简易教程7——读/写文件

    读/写文件 NumPy的文件读/写主要有二进制的文件读/写和文件列表形式的数据读/写两种形式.学会读/写文件是利用NumPy进行数据处理的基础.NumPy提供了若干函数,可以把结果保存到二进制或文本文 ...

  7. web.config文件访问物理路径_计算机操作系统学习笔记(五):文件管理

    五.设备管理 -- 文件管理 文件和进程是 OS 引入的两个重要概念. 5.1 文件的概念 5.1.1 文件概述 概念 文件是具有符号名的,在逻辑上具有完整意义的一组相关信息项的序列 文件(docum ...

  8. python - 啃书 第九章 文件访问

    概述 计算机文件是存储在外部存储器上的数据集合.通常计算机处理的大量数据都是以文件的形式组织存放的,操作系统也是以文件为单位对数据进行管理的. 每个文件都有一个文件名,文件名由基本名和扩展名组成,不同 ...

  9. Linux目录和文件的创建与删除

    Linux下文件&目录创建与删除 这里写目录标题 Linux下文件&目录创建与删除 1.文件的创建 常见的创建文件的几种命令 2.创建目录 3.删除文件及目录的命令:rm 1.文件的创 ...

最新文章

  1. CSS中margin和padding的区别
  2. PostgreSQL Frontend/Backend protocol (通信协议)
  3. 技术女性的是是非非(2)
  4. 云计算的基础设施服务
  5. 【Keras】Win10系统 + Anaconda+TensorFlow+Keras 环境搭建教程
  6. list删除重复元素
  7. pandas小记:pandas数据输入输出
  8. js cookie设置,获取,删除
  9. mysql处理点云_Oracle云时代MySQL HTAP解决方案
  10. 加速与缓存技术之Varnish
  11. 软件之美: 易用性设计的目标及准则
  12. 4款最好的Android设备HTML编辑器
  13. 超级管理器Android,超级文件管理器官方最新版下载-超级文件管理器 安卓版v5.5.2-PC6安卓网...
  14. 工业机器人pallet指令_对《工业机器人编程指令详解》的详细介绍
  15. (php毕业设计)基于php健身俱乐部管理系统源码
  16. 唐宋边塞诗词中的古灵州
  17. 【Apache运维基础(4)】Apache的Rewrite攻略(1)
  18. Qt5把图片如何导出为pdf再到剪切板
  19. N880E ICS4.0搜索键改锁屏 仅修改一文件的一处
  20. 如何使用lxml判断网站公告是否更新

热门文章

  1. unity3d android hdr,Unity3d 中的 HDR_BLOOM
  2. hadoop yarn 获取日志_Hadoop YARN日志查看方式
  3. usb 键盘码表_键盘鼠标对应码表-delphi键值
  4. java获取redis中各种数据类型key对应的value代码简单封装
  5. day34-2 类和对象(重点)
  6. 精读《图解HTTP》
  7. iview上传文件案例
  8. 老司机带你用 Go 语言实现 MapReduce 框架
  9. 在 Linux shell 中自由操作时间变量
  10. 【CSS】text-align:justify 的使用