Linux 下文件IO编程进程控制实验
Linux 下文件IO编程&进程控制实验
一、基本I/O操作
(1).Linux的输入/输出(I/O)操作,通常为五个方面:打开,读取,写入,定位和关闭;对应的函数分别为:open()、read()、write()、lseek()、close()。他们的原型分别如下:
#include<sys/types.h>
#include<sys/stat.h>
#include<unistd.h>
#include<fcntl.h>
int open(const char * pathname,int flags,mode_t mode);
ssize_t read(int fd,void *buf,size_t nbytes);
ssize_t write(int fd,const void *buf,size_t nbytes);
off_t lseek(int fd,off_t offset,int whence);
int close(int fd);
(2).基本函数的一个共同特点就是,它们都是通过(file descriptor)来完成文件I/O操作的。
在open()函数中:pathname 为字符串,表示被打开的文件名称,可以包含路径;flags 为一个或多个标记,表示文件的打开方式;mode 表示被打开文件的存取权限模式。
在read()和write()函数中:fd 表示文件描述符;buf 指定存储器读出数据的缓冲区;count 指定读出或写入的字节数。
close()函数:当使用完文件时可以用close关闭文件,close会让缓冲区中的数据写回磁盘,并释放文件所占的资源,若文件顺利关闭则返回0,关闭失败则返回-1,并置errno。
二、标准I/O操作
1.fopen()函数:函数原型如下:
#include<stdio.h>
FILE *fopen(const char *pathname,const char *type);
fopen()函数可以指定打开文件的路径和模式,路径由参数path指定,模式相当于open()函数中的标志位flag。
2.fclose()函数,函数原型如下:
int fclose(FILE *fp);
将缓冲区的数据写入文件中,并释放系统所提供的文件资源。
3.fread()函数和fwrite()函数:函数原型如下:
#include<stdio.h>
size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream);
size_t fwrite(const void *ptr,size_t size,size_t nmemb,FILE *stream);
返回值:读或写的记录数,成功时返回的记录数等于nmemb,出错或读到文件末尾时返回的记录数小于nmemb,也可能返回0。
fread和fwrite用于读/写记录,参数size指出一条记录的长度,而nmemb指出要读或写多少条记录,nmemb是请求读或写的记录数,fread和fwrite返回的记录数有可能小于nmemb指定的记录数
三、实验教学和目的
1.掌握Linux文件IO编程方法;
2.掌握标准I/O和基本I/O函数的调用方法;
3.掌握进程控制编程,包括进程的创建,启动和终止;
四、实验内容
1、基本IO(非缓冲)操作编程
(1)编写一个基本IO操作的源代码,要求使用到基本IO操作的5个函数:打开、读取、写入、定位和关闭。
(2)编译上述源代码并调试通过,最后对运行结果予以分析验证。
首先是lseek(),将文件位置标记设置为从尾部偏移offset字节位置;open()则创建或打开一个文件,write()则是往文件里写了字符串,read()读取文件内容保存到buffer[ ]中,返回读取字符个数,最后是close(),关闭(fd)。
函数实现的具体功能自拟,提交源代码和对应的运行结果。
2.标准IO(缓冲)操作编程
(1)编写一个标准IO操作的源代码,要求使用到标准IO操作的5个函数:打开、读取、写入、定位和关闭。
(2)编译上述源代码并调试通过,最后对运行结果予以分析验证。
先写后读,然后定位fseek,最后fclose,其次创建一个文件recfile。
函数实现的具体功能自拟,提交源代码和对应的运行结果。
3、进程控制编程
(1)编写程序,使用fork()函数创建子进程,理解父子进程的执行流程;
先执行了父进程,后执行了子进程,调用一次fork(),返回了两次。
(2)编写程序,使用exec函数族,掌握在程序中启动新进程的方法和流程;
此次我用的是exec函数族中的execlp函数,exec函数只有出错的时候有返回值,并没有成功的返回值,execlp中第一个ps是程序名,要在PATH环境变量中找到并执行它,第二个ps是命令行ps,等价于ps -ef。
(3)编写程序,使用exit函数,掌握进程退出函数的使用方法
Exit()是用来终止进程的,程序执行到exit()时,进程无条件停止剩下的所有操作,_exit()是直接使进程停止运行,会立即退出,前面打印的信息无法完整输出。
Linux 下文件IO编程进程控制实验相关推荐
- Linux下C语言编程-进程的创建
Linux下C语言编程-进程的创建 作者:hoyt 1.进程的概念 Linux操作系统是面向多用户的.在同一时间可以有许多用户向操作系统发出各种命令.那么操作系统是怎么实现多用户的环境呢?在现代的操作 ...
- linux+下c语言编程项目,精通UNIX下C语言编程与项目实践
cc -I //include 目录 -L //静态库目录?动态也可以 -l //小写L,接静态库名称?动态也可以 -DXXX='"XXFF"' //-D直接定义宏 -c 只编译 ...
- Linux下的C编程实战(开发平台搭建,文件系统编程,进程控制与进程通信编程,“线程”控制与“线程”通信编程,驱动程序设计,专家问答)
Linux下的C编程实战(一) ――开发平台搭建 1.引言 Linux操作系统在服务器领域的应用和普及已经有较长的历史,这源于它的开源特点以及其超越Windows的安全性和稳定性.而近年来,Linux ...
- Linux系统编程【文件IO、进程、进程间通信、信号、线程、互斥】
linux系统编程 个人通过学习,手打了一份48000字的Linux系统编程的笔记,包含了[文件IO.进程.进程间通信.信号.多线程.互斥]等知识点,并给出了大量的代码案例对每个重要的知识点进行了代码 ...
- 操作系统实验:Linux下的进程控制实验
进程控制实验 一.实验目的: 二.实验平台: 三.实验内容: 1.进程的创建与销毁 进程控制相关函数 实验结果分析 2.多进程并发执行 time命令 实验结果分析 四.总结分析 一.实验目的: 加深对 ...
- linux 带缓存的fwrite,文件IO编程之(六):基于流缓冲 fopen,fwrite,fput
标准IO开发 前面分析的文件IO编程都是基于文件描述符的.这些都是基本的IO控制,是不带缓存的. 这里要讨论的IO操作是基于流缓冲的,它是符合ANSIC的标准IO处理. 标准IO提供流缓冲的目的是尽可 ...
- linux系统进程控制实验报告,Linux进程控制实验报告.doc
里奴性进程控制实验报告 实验名称: Linux进程控制 实验要求:一.编写一个Linux系统C程序,由父亲创建2个子进程,再由子进程各自从控制台接收一串字符串,保存在各自的全局字符串变量中,然后正常结 ...
- Linux下的C编程实战
Linux下的C编程实战(一) ――开发平台搭建 1.引言 Linux操作系统在服务器领域的应用和普及已经有较长的历史,这源于它的开源特点以及其超越Windows的安全性和稳定性.而近年来, Linu ...
- Linux下的C编程实战(转载)
http://www.cnblogs.com/alexusli/archive/2008/10/24/1318736.html Linux下的C编程实战(转载) (转自)http://www.cnbl ...
- C——Linux下的串口编程
原 C--Linux下的串口编程 2017年06月06日 19:30:50 C_Aya 阅读数:11537 <span class="tags-box artic-tag-box&qu ...
最新文章
- 30亿美金投入!一文读懂英伟达性能凶残的Tesla V100牛在哪?
- 背包学习————完全背包
- 听说你还不懂哈夫曼树和哈夫曼编码
- Android近场通信---高级NFC(二)
- 如何制作毛玻璃效果?
- Timus 1531. Zones on a plane
- c语言嵌套结构体生日,第09天C语言(17):结构体嵌套
- Python机器学习、深度学习库总结(内含大量示例,建议收藏)
- 百度离线地图瓦片下载
- sublime python快捷键
- python爬虫万能代码-python网络爬虫源代码(可直接抓取图片)
- python教程马哥_【60集全】全新马哥教育 运维必备python基础语法全讲解_IT教程网...
- kingbase8建表
- uniPaas入门(magic最新版本改名叫uniPaas,unipaas也就是以前的magic)
- pytorch 问题:_, term_width = os.popen(‘stty size‘, ‘r‘).read().split()
- iperf3.1源码解析笔记(1)-网络压力测试工具iperf的使用
- CompareTo和compare的区别
- Chrome插件:请开始你的表演,smartUp手势骚操作
- linux下使用迅雷的完美办法(免费)
- 升级版 @Async,让异步任务无懈可击