Linux应用程序学习之文件系统调用函数编程

上一篇我们了解了Linux系统下函数库的设计方法,这一章我们就来学习一下linux系统下常用的文件操作函数,在进行系统文件操作函数介绍前,我们首先要明白一个术语:文件描述符。何为文件描述符?在linux系统中,所有打开的文件都有一个数字对应,由系统来分配这个数字,这个数字就称为文件描述符。

具体使用方法我们后面编程来介绍,下面我们就来看看函数介绍。

有关Liunx系统中文件编程用到的常用的函数有七个,在此我不打算详细列举其用法之类的,而是介绍一种函数学习方法,授之以鱼不如授之以渔,可以让我们更好掌握这些函数的使用。

Linux文件编程常用的函数有

打开文件函数:open

创建文件函数:creat(open也可创建文件)

读取文件函数:read

写入文件函数:write

定位文件函数:lseek

复制文件函数:dup

关闭文件函数:close

我们如何去了解这些函数内?打开我们的Liunx系统终端,例如我们想了解open函数的相关信息,可以在我们的命令行界面输入

man  open

就可以查询我们的open函数的相关信息了,如图所示:

如此便有我们需要函数的详细介绍了,稍微懂点英文便可以看懂了,需要说明的是,我们的man 命令分了很多章节,第一个章节是命令,第二个章节是系统调用函数,第三个章节是库函数,每当我们man一个关键字的时候,首先是从我们的第一个章节也就是命令章节来查找,如果没找到就进入下一个章节查找,我们的read关键字是我们的一个liunx下的命令,因此在第一个章节中也有,所以我们只是man read只会出来read这个命令的信息,而不是相关函数的信息,如果我们要查看函数的信息,由于read属于系统调用函数,属于第二个章节,因此我们可用下面的命令

man 2  read

write也是一样的。

好了,介绍完上面的函数太过于理论,下面就以一个实例编程来加深对其的直观感受吧。

我们就实现linux命令cp所完成的功能吧,即将一个文件复制到另外一个位置(参照学习视频)。下面是程序代码,我已做好详细的注释。

#include

#include

#include

#include

#include

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

{

int fd_s;

int fd_t;        //定义源文件和目标文件的文件描述符

int count = 0;   //每次复制的字节数

char buf[128];   //定义一个数据缓冲区,一次读取128个字节

fd_s = open(argv[1] , O_RDONLY);  //打开源文件

//由于目标文件没有,所以要创建,用open函数可以,用creat函数也行

fd_t = open(argv[2] , O_RDWR|O_CREAT,0666);

while( (count = read(fd_s , buf,128))>0)                           //读取源文件数据,这个位置要判断是否还有数据可读

write(fd_t , buf , count);                                       //读完之后就是写如数据了,这个一定要写成count,因为源文件字节数不一定是128的整倍数,读多少就写多少

close(fd_s);

close(fd_t);

}

下面我们就在linux下面运行我们的程序看看结果:

以上就是我学习linux系统下文件编程的总结,希望得到指正。

linux应用程序接收文件,Linux应用程序学习之文件编程相关推荐

  1. 前端学习(2818):小程序学习之文件建立

  2. 读一个文件的java程序_java 读文件的几种方法(一)

    先前使用一直很混乱的使用过这些方法,但都没有好好做过总结. 这两天趁有空,小结一下. 1.输入输出流 说起 java的 读写文件不得不说java中的输入输出流对象, 被读取的对象为输入流(如某个文件, ...

  3. Linux学习记录--文件压缩

    文件压缩 机器语言与程序语言 对于机器来说只能识别0,1,我们如果让机器运行必须输入机器能够识别的语言,可是机器语言不利于人们使用可理解,因此科学家就开发出人类能看的懂的程序语言,然后再创造出&quo ...

  4. Linux学习笔记-文件压缩与解压缩

    背景:文件压缩技术 首先,我们的电脑都是以字节为单位进行计量(最小计量单位为bit).假设我们要存储数字"1",那么计算机会存储为"00000001",压缩就是 ...

  5. linux拷贝文件断电后丢失,linux突然断电重启,配置文件丢失/程序无法打开/文件损坏...

    电脑突然断电,重新开机后发现有的程序无法正常启动,原因是配置文件损坏了.感觉奇怪,为什么在硬盘里的文件会内容丢失? 1.可能:写数据的过程被中断,只完成了一部分.可能会出现乱码(因为只写了几个字节,不 ...

  6. linux自动重启保护,Linux在崩溃时自动重启应用程序 – 守护进程

    我有一个运行嵌入式 Linux的系统,它连续运行至关重要.基本上,它是一个与传感器通信并将数据中继到数据库和Web客户端的过程. 如果发生崩溃,如何自动重启应用程序? 此外,有几个线程正在进行轮询(例 ...

  7. linux删除指定大小的文件,Linux下删除空文件,删除指定大小的文件

    Linux下批量删除空文件(大小等于0的文件)的方法: find . -name "*" -type f -size 0c | xargs -n 1 rm -f 用这个还可以删除指 ...

  8. linux 解压 目录,linux 中目录、文件的解压缩

    几种常见的压缩文件案扩展名: *.z           compress程序压缩的文件 *.gz         gzip程序压缩的文件 *.bz2       bzip2程序压缩的文件 *.tar ...

  9. linux系统打包工具,Linux 压缩、解压缩和打包工具

    前言:你是否曾经因为某个文件占用空间较大,而空间紧缺的U盘无法存放此文件.你是否曾经因为软件里有太多文件而不方便复制和携带.你是否曾因需要备份太过零散而头疼.那么基于"文件压缩和打包&quo ...

最新文章

  1. SpringBoot文件上传时提示FileUploadBase$SizeLimitExceed
  2. python爬虫科研数据提取_python爬虫数据提取四之pyquery
  3. 【PAT甲级 排序】1096 Consecutive Factors (20 分) C++ 全部AC
  4. MySQL 调用存储过程
  5. 线程池简单实现java_简单实现java线程池
  6. 【软件质量】软件可维护性
  7. python nums函数_Python中的内置函数
  8. 【python】类属性以及实例属性、实例方法的介绍
  9. IBatis .NET 开发学习笔记——简要介绍
  10. Android系列之开发环境搭建
  11. attachEvent时间监听方式
  12. 如何修改植物大战僵尸文档
  13. 随意切换双卡流量,立即获取对应卡的SMIS
  14. 如何开发一个车牌识别,车牌识别系统,车辆识别系统毕业设计毕设作品
  15. c语言求幸运数字程序,算法题挑选幸运数字,该如何处理
  16. 一个列子演示java中软引用的回收时机
  17. 丰田chr内外循环怎么区分_从奕泽/C-HR的这些细节 我已经看出南北丰田的差异在哪里...
  18. 树莓派体验1 - 初次启动树莓派
  19. 期货破位(期货破位做单法)
  20. Android逆向工程:解决针对小米系统应用,使用Apktool反编译失败问题!

热门文章

  1. Visual Studio——多字节编码与Unicode码
  2. Workshop | 超高效的设计方法你GET了吗?Design Sprint设计冲刺工作坊
  3. .Net Core建站(1):EF Core+CodeFirst数据库生成
  4. 使用 Palette 让你的 UI 色彩与内容更贴合
  5. 首航节能:光热行业刚起步 子公司处于亏损状态
  6. Airbnb数据科学团队进化论:如何由内而外实现数据驱动
  7. 局域网常用的DOS命令查IP
  8. DotnetSpider (二) Downloader的设置 Request自定义数据字典
  9. ThinkPHP 3.2.3 简单后台模块开发(一)常用配置
  10. 关于JAVA中URL传递中文参数,取值是乱码的解决办法