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。
freadfwrite用于读/写记录,参数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编程进程控制实验相关推荐

  1. Linux下C语言编程-进程的创建

    Linux下C语言编程-进程的创建 作者:hoyt 1.进程的概念 Linux操作系统是面向多用户的.在同一时间可以有许多用户向操作系统发出各种命令.那么操作系统是怎么实现多用户的环境呢?在现代的操作 ...

  2. linux+下c语言编程项目,精通UNIX下C语言编程与项目实践

    cc -I  //include 目录 -L //静态库目录?动态也可以 -l //小写L,接静态库名称?动态也可以 -DXXX='"XXFF"' //-D直接定义宏 -c 只编译 ...

  3. Linux下的C编程实战(开发平台搭建,文件系统编程,进程控制与进程通信编程,“线程”控制与“线程”通信编程,驱动程序设计,专家问答)

    Linux下的C编程实战(一) ――开发平台搭建 1.引言 Linux操作系统在服务器领域的应用和普及已经有较长的历史,这源于它的开源特点以及其超越Windows的安全性和稳定性.而近年来,Linux ...

  4. Linux系统编程【文件IO、进程、进程间通信、信号、线程、互斥】

    linux系统编程 个人通过学习,手打了一份48000字的Linux系统编程的笔记,包含了[文件IO.进程.进程间通信.信号.多线程.互斥]等知识点,并给出了大量的代码案例对每个重要的知识点进行了代码 ...

  5. 操作系统实验:Linux下的进程控制实验

    进程控制实验 一.实验目的: 二.实验平台: 三.实验内容: 1.进程的创建与销毁 进程控制相关函数 实验结果分析 2.多进程并发执行 time命令 实验结果分析 四.总结分析 一.实验目的: 加深对 ...

  6. linux 带缓存的fwrite,文件IO编程之(六):基于流缓冲 fopen,fwrite,fput

    标准IO开发 前面分析的文件IO编程都是基于文件描述符的.这些都是基本的IO控制,是不带缓存的. 这里要讨论的IO操作是基于流缓冲的,它是符合ANSIC的标准IO处理. 标准IO提供流缓冲的目的是尽可 ...

  7. linux系统进程控制实验报告,Linux进程控制实验报告.doc

    里奴性进程控制实验报告 实验名称: Linux进程控制 实验要求:一.编写一个Linux系统C程序,由父亲创建2个子进程,再由子进程各自从控制台接收一串字符串,保存在各自的全局字符串变量中,然后正常结 ...

  8. Linux下的C编程实战

    Linux下的C编程实战(一) ――开发平台搭建 1.引言 Linux操作系统在服务器领域的应用和普及已经有较长的历史,这源于它的开源特点以及其超越Windows的安全性和稳定性.而近年来, Linu ...

  9. Linux下的C编程实战(转载)

    http://www.cnblogs.com/alexusli/archive/2008/10/24/1318736.html Linux下的C编程实战(转载) (转自)http://www.cnbl ...

  10. C——Linux下的串口编程

    原 C--Linux下的串口编程 2017年06月06日 19:30:50 C_Aya 阅读数:11537 <span class="tags-box artic-tag-box&qu ...

最新文章

  1. 30亿美金投入!一文读懂英伟达性能凶残的Tesla V100牛在哪?
  2. 背包学习————完全背包
  3. 听说你还不懂哈夫曼树和哈夫曼编码
  4. Android近场通信---高级NFC(二)
  5. 如何制作毛玻璃效果?
  6. Timus 1531. Zones on a plane
  7. c语言嵌套结构体生日,第09天C语言(17):结构体嵌套
  8. Python机器学习、深度学习库总结(内含大量示例,建议收藏)
  9. 百度离线地图瓦片下载
  10. sublime python快捷键
  11. python爬虫万能代码-python网络爬虫源代码(可直接抓取图片)
  12. python教程马哥_【60集全】全新马哥教育 运维必备python基础语法全讲解_IT教程网...
  13. kingbase8建表
  14. uniPaas入门(magic最新版本改名叫uniPaas,unipaas也就是以前的magic)
  15. pytorch 问题:_, term_width = os.popen(‘stty size‘, ‘r‘).read().split()
  16. iperf3.1源码解析笔记(1)-网络压力测试工具iperf的使用
  17. CompareTo和compare的区别
  18. Chrome插件:请开始你的表演,smartUp手势骚操作
  19. linux下使用迅雷的完美办法(免费)
  20. 升级版 @Async,让异步任务无懈可击

热门文章

  1. 程序员音乐_预订音乐会的程序员指南
  2. 脉冲计数器单片机c语言编程,基于单片机的光电计数器
  3. Autodesk 3DSMax 2012 安装说明
  4. MFC 获取窗口句柄
  5. 现金支票打印模板excel_Excel的正确使用技巧-Excel的提速大法
  6. python正交表结果生成
  7. 黑客防线、黑客X档案专辑 NPM、PYPI、DockerHub 备份
  8. 无线路由器密码破解-BT3-spoonwep2
  9. 企业经常说绩效管理难,误区在哪?附绩效管理系统解决方案
  10. SQL创建触发器以及触发器的使用实例+详解