linux应用程序接收文件,Linux应用程序学习之文件编程
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应用程序学习之文件编程相关推荐
- 前端学习(2818):小程序学习之文件建立
- 读一个文件的java程序_java 读文件的几种方法(一)
先前使用一直很混乱的使用过这些方法,但都没有好好做过总结. 这两天趁有空,小结一下. 1.输入输出流 说起 java的 读写文件不得不说java中的输入输出流对象, 被读取的对象为输入流(如某个文件, ...
- Linux学习记录--文件压缩
文件压缩 机器语言与程序语言 对于机器来说只能识别0,1,我们如果让机器运行必须输入机器能够识别的语言,可是机器语言不利于人们使用可理解,因此科学家就开发出人类能看的懂的程序语言,然后再创造出&quo ...
- Linux学习笔记-文件压缩与解压缩
背景:文件压缩技术 首先,我们的电脑都是以字节为单位进行计量(最小计量单位为bit).假设我们要存储数字"1",那么计算机会存储为"00000001",压缩就是 ...
- linux拷贝文件断电后丢失,linux突然断电重启,配置文件丢失/程序无法打开/文件损坏...
电脑突然断电,重新开机后发现有的程序无法正常启动,原因是配置文件损坏了.感觉奇怪,为什么在硬盘里的文件会内容丢失? 1.可能:写数据的过程被中断,只完成了一部分.可能会出现乱码(因为只写了几个字节,不 ...
- linux自动重启保护,Linux在崩溃时自动重启应用程序 – 守护进程
我有一个运行嵌入式 Linux的系统,它连续运行至关重要.基本上,它是一个与传感器通信并将数据中继到数据库和Web客户端的过程. 如果发生崩溃,如何自动重启应用程序? 此外,有几个线程正在进行轮询(例 ...
- linux删除指定大小的文件,Linux下删除空文件,删除指定大小的文件
Linux下批量删除空文件(大小等于0的文件)的方法: find . -name "*" -type f -size 0c | xargs -n 1 rm -f 用这个还可以删除指 ...
- linux 解压 目录,linux 中目录、文件的解压缩
几种常见的压缩文件案扩展名: *.z compress程序压缩的文件 *.gz gzip程序压缩的文件 *.bz2 bzip2程序压缩的文件 *.tar ...
- linux系统打包工具,Linux 压缩、解压缩和打包工具
前言:你是否曾经因为某个文件占用空间较大,而空间紧缺的U盘无法存放此文件.你是否曾经因为软件里有太多文件而不方便复制和携带.你是否曾因需要备份太过零散而头疼.那么基于"文件压缩和打包&quo ...
最新文章
- SpringBoot文件上传时提示FileUploadBase$SizeLimitExceed
- python爬虫科研数据提取_python爬虫数据提取四之pyquery
- 【PAT甲级 排序】1096 Consecutive Factors (20 分) C++ 全部AC
- MySQL 调用存储过程
- 线程池简单实现java_简单实现java线程池
- 【软件质量】软件可维护性
- python nums函数_Python中的内置函数
- 【python】类属性以及实例属性、实例方法的介绍
- IBatis .NET 开发学习笔记——简要介绍
- Android系列之开发环境搭建
- attachEvent时间监听方式
- 如何修改植物大战僵尸文档
- 随意切换双卡流量,立即获取对应卡的SMIS
- 如何开发一个车牌识别,车牌识别系统,车辆识别系统毕业设计毕设作品
- c语言求幸运数字程序,算法题挑选幸运数字,该如何处理
- 一个列子演示java中软引用的回收时机
- 丰田chr内外循环怎么区分_从奕泽/C-HR的这些细节 我已经看出南北丰田的差异在哪里...
- 树莓派体验1 - 初次启动树莓派
- 期货破位(期货破位做单法)
- Android逆向工程:解决针对小米系统应用,使用Apktool反编译失败问题!
热门文章
- Visual Studio——多字节编码与Unicode码
- Workshop | 超高效的设计方法你GET了吗?Design Sprint设计冲刺工作坊
- .Net Core建站(1):EF Core+CodeFirst数据库生成
- 使用 Palette 让你的 UI 色彩与内容更贴合
- 首航节能:光热行业刚起步 子公司处于亏损状态
- Airbnb数据科学团队进化论:如何由内而外实现数据驱动
- 局域网常用的DOS命令查IP
- DotnetSpider (二) Downloader的设置 Request自定义数据字典
- ThinkPHP 3.2.3 简单后台模块开发(一)常用配置
- 关于JAVA中URL传递中文参数,取值是乱码的解决办法