西电操作系统上机实验1
欢迎各位学弟学妹收藏操作系统上机详解,大家有空也可以看看这篇文章哦——西电计科课程学习。
实验1:创建进程
一、实验目的
学会通过基本的Windows进程控制函数,由父进程创建子进程。
二、实验内容
假设现在有这样的一个工作,需要计算1-100的和,还需要做一个工作是读写文件。
我们可以让父进程计算,创建一个子进程实现读写文件。
主要工作:
1、首先由父进程创建子进程
2、让子进程创建一个文件并写入数据,子进程写文件过程中,父进程继续执行计算工作
3、等子进程执行完以后,父进程读取文件内容输出,实现进程协同工作。
三、程序框架
父进程框架:
void main()
{//为创建进程做准备工作//创建子进程if(创建失败)返回else(创建成功)//执行计算1——100的和//等子进程执行完,读取子进程的文件内容,并输出。
}
子进程框架:
void main()
{//创建文件if(失败)返回else(成功)//向文件写入数据//读取文件内容输出
}
父进程创建子进程:用CreateProcess函数来创建一个新进程。
BOOL CreateProcess(
LPCTSTR lpApplicationName; //指定可执行程序名
LPTSTR lpCommandLine; //命令行字符串,可以为NULL
LPSECURITY_ATTRIBUTES lpProcessAttributes; //新进程对象的安全属性
LPSECURITY_ATTRIBUTES lpThreadAttributes; //新进程对应线程的安全属性
BOOL bInheritHandles;//指定父进程的对象句柄是否能被子进程继承
DWORD dwCreationFlags; //指定创建进程的附加标记,即指定新创建进程的特性
LPVOID lpEnvironment;//指定新进程使用的环境,NULL表示同父进程环境
LPCTSTR lpCurrentDirectory; //指定子进程当前路径,NULL表示与父进程路径相同
LPSTARTUPINFO lpStartupInfo; //指定新进程主窗口如何显示
LPPROCESS_INFORMATION lpProcessInformation; //作为返回值使用,是一个指针
);
子进程的工作主要涉及的是文件操作。
创建文件可以用fopen函数:
FILE *fopen( //返回一个指向文件结构体的指针
const char *filename, //打开或创建的文件名
const char *mode //打开或创建方式,即设定读写权限
);
//Fopen函数既可以创建文件也可以打开已存在的文件
FILE *pFile=fopen("1.txt","w");
读文件用fread函数:
size_t fread(
const void *buffer, //指向要读取内容的文件指针
size_t size, //每次读取大小,字节为单位
size_t count, //读取次数
FILE *stream //一个指向文件结构体的指针,表示将要写读取操作的文件
);
在每次写入文件盒读取文件操作后,关闭文件,使用fclose函数:
int fclose( FILE *stream );//关闭文件,参数是指向操作文件的文件结构体的指针
四、源代码
父进程:
#include<stdio.h>
#include<windows.h>
int main()
{STARTUPINFO sui; //启动信息结构体 PROCESS_INFORMATION pi; //在创建进程时相关的数据结构之一,该结构返回有关新进程及其主线程的信息。ZeroMemory(&sui,sizeof(sui));sui.cb = sizeof(STARTUPINFO); //将cb成员设置为信息结构体的大小int sum = 0;char content[100] = ""; //初始化content字符数组用来存放文件内容 if(CreateProcess("D:\\child.exe",NULL,NULL,NULL,FALSE,CREATE_NEW_CONSOLE,NULL,NULL,&sui,&pi))//创建进程 {printf("已创建一个子进程\n");for(int i = 1; i <= 100; i++){sum = sum + i; //求1-100之和 Sleep(5); //延迟时间5msprintf("Now, sum = %d\n",sum);}WaitForSingleObject(pi.hProcess,INFINITE); //一直等下去直到进程结束 FILE *fp = fopen("D:\\test.txt","r");fread(content,sizeof(char),100,fp); //设置读取文件内容的相关参数 printf("子进程创建的文件内容如下:\n\n%s\n\n",content);fclose(fp);}elseprintf("创建子进程失败\n");printf("实验结束!");return 0;
}
子进程:
#include<stdio.h>
#include<windows.h>
int main()
{printf("子进程开始运行...\n\n");const char *something = "这是一句话。";FILE *fp;if(fp = fopen("D:\\test.txt","w+")) //以可读写方式打开文件{printf("文件打开成功!\n\n");fwrite(something,strlen(something),1,fp); //将something写入文件中 fwrite("\n这是另一句话。",strlen("\n这是另一句话。"),1,fp); //将另一句话写入文件中 printf("写入数据成功!\n\n");fclose(fp);//关闭文件 fp = fopen("D:\\test.txt","r"); //以只读方式打开文件 printf("当前文件中的内容如下:\n");char ch=fgetc(fp); //取第一个字符 while(ch!=EOF) //当该字符不为文件结束标志时 {putchar(ch); //输出该字符 ch=fgetc(fp); //继续从文件中获取字符 }fclose(fp); //关闭文件 }elseprintf("创建文件失败!\n");printf("\n\n");system("pause");return 0;
}
五、程序运行结果
西电操作系统上机实验1相关推荐
- 西电操作系统上机实验2
欢迎各位学弟学妹收藏操作系统上机详解,大家有空也可以看看这篇文章哦--西电计科课程学习 实验2:线程共享进程数据 一.实验目的 1.学习创建线程实现多工作同步运行; 2.了解线程与进程之间的数 ...
- 西电操作系统上机实验3
欢迎各位学弟学妹收藏操作系统上机详解,大家有空也可以看看这篇文章哦--西电计科课程学习 实验3:信号通信 一.实验目的 利用信号通信机制在父子进程及兄弟进程间进行通信. 二.实验内容 父进程创 ...
- 西电操作系统上机实验4
欢迎各位学弟学妹收藏操作系统上机详解,大家有空也可以看看这篇文章哦--西电计科课程学习 实验4:匿名管道通信 一.实验目的 学习使用匿名管道在两个进程间建立通信. 二.实验内容 父进程创建一个 ...
- 西电操作系统上机实验6
实验6:共享主存实现进程通信 一.实验目的 进程同步是操作系统多进程/多线程并发执行的关键之一,进程同步是并发进程为了完成共同任务采用某个条件来协调他们的活动,这是进程之间发生的一种直接制约关系. ...
- 西电 操作系统课设 在Ubuntu18.04安装pintos
西电 操作系统课设 在Ubuntu18.04安装pintos 前言 1. 主要步骤 2. VMware的安装 3. Ubuntu18.04的安装和配置 4. Bochs的安装 4. Pintos安装 ...
- 西电-数据可视化-实验五-高维非空间数据可视化(pyecharts)
西电-数据可视化-实验五-高维非空间数据可视化 一.实验内容 在某次大型会议中,为确保会议过程安全,会场使用了电子胸牌对场内人员的移动轨迹进行了监控.现经过处理,得到了某一天内人员在场内各个区域逗留的 ...
- 大学操作系统上机实验
上机实验指导书 课程名称 操作系统 主撰人 刘天波 审核人 栾方军 沈阳建筑大学信息学院 2014 年3月 课程名称:操作系统 上机学时:16 适用专业:计算机科学与技术 先修课程:C语言 一 ...
- 西电计算机组装实验报告,西电模电实验报告(共7篇).docx
西电模电实验报告(共7篇) 姓名:学号: 生命科学技术学院实验报告小组成员: 实验名称: 实验报告内容基本要求: 一.实验目的:二.实验材料和仪器设备:三.实验基本原理及步骤:四.实验数据记录和结果分 ...
- 西电数据结构上机题目-删除单链表中介于min与max之间的结点
希望学长的代码能给大二西电er们带来帮助(大家一定要好好学习数据结构,合理利用资源) 大家找到了什么bug或有什么改进意见可以私信我或在下方留言,我都会看的 不多说废话直接上代码 #include&l ...
最新文章
- IDEA下找不到diagrams按钮选项的解决方案
- 青龙羊毛——帮多多(教程)
- 有勇气的牛排 --- 安卓
- postgresql修炼之道_PostgreSQL内核开发学习资料
- 阿里云kafka使用记录(python版本)
- shell变一些小技巧
- iframe 子父窗口互掉 js
- Retrofit2 的简单使用
- mysql最大字段数_mysql最大字段数量及 varchar类型总结
- 创业公司如何做到零成本实现用户快速增长
- 数据结构与算法-二叉树遍历
- Extjs4.0 视频教程
- 电脑公司最新稳定win7系统下载
- Java制作小工具 局域网聊天工具
- PT建站源码(PT服务器原程序)汇总 by 乱世狂人
- Python3教程--和小名一起学Python
- 阿里云的端口映射问题
- 靖哥哥教你如何用java做爬虫抓取网站美女图片(详解步骤)
- JAVA设计模式总结之六大设计原则(一)
- 京东淘宝天猫户外服饰行业数据分析(电商数据查询软件)