- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统B2-上机实验-进程
实验二 Linux 进程实验
姓名:段叶叶 班级:信息1302 学号地点:东区实验室FF109
时间:2014年10月13日星期一
成绩:
一、实验内容
创建进程的系统调用fork();
创建进程的系统调用vfork();
执行新程序的系统调用exec();
等待进程结束的系统调用wait()或waitpid()。
前三题必做 ,最后一题选做。
二、实验目的
熟悉进程的系统调用。
三、实验环境
登陆Linux虚拟机,进入Linux shell, 提示符为 $,表示普通用户提示符。
四、实验题目
1. 【题目】: 编写程序forkgrandchild.c,用来创建孙子进程。
【要求】:在读懂程序forktest.c的基础上,编写程序
forkgrandchild.c(forkgrandchild.c创建在用户名(如wm)目录下的process目录下),所创建的程序forkgrandchild.c可实现创建孙子进程,并显示孙子进程的pid,其父进程的pid,forkgrandchild.c要求可读性好,用户界面友好。
【预备知识】:
Linux进程状态
运行状态:程序正在运行或在运行队列中等待运行。
可中断等待状态:进程正在等待某个事件完成,等待过程可被信号或定时器唤醒。
不可中断等待状态:进程正在等待某个事件完成,不可被信号或定时器唤醒,必须等待事件的发生,才可唤醒。
僵死状态:进程已终止,但进程描述符依然存在,直到父进程调动wait()函数后释放。
停止状态:进程因收到SIGSTOP SIGSTP SIGTIN SIGTOU信号后停止运行或该进程正在被跟踪(调式程序时)。
ps命令
ps命令可查看进程的当前状态。
如 ps aux(相关命令参数自学)
对ps命令结果字符的解释
<(高优先级进程)、N(低优先级进程)、L(内存锁页,即页不可被换出内存)、s(该进程为会话首进程)、l(多线程进程)、+(进程位于前台进程组)、R(运行状态)、Z(僵死状态)、D(不可中断等待状态)、S(可中断等待状态)、T(停止状态)。
fork()函数
fork()是创建一个新进程的唯一方法,子进程可以继承其父进程几乎所有的资源。在命令行下使用man 2 fork 可获得该函数的函数声明。fork()有两个返回值。成功调用fork后,当前进程实际上已经分裂为两个进程,一个是原来的父进程,另一个是刚刚创建的子进程。父子进程在调用fork地方分开,一个是父进程调用fork的返回值,返回值为刚刚创建的子进程的pid;另一个是子进程中fork函数的返回值,为0。fork返回两次的前提是进程创建成功,若失败返回为-1。用返回值可区分父子进程。
fork之后是父还是子进程先运行是不确定的,这取决于内核所使用的调度算法,一般是交替执行,使进程享有同等执行权。
forktest.c 源代码
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main(void)
{
pid_t pid;
printf("process creation study\n");
pid=fork( );
switch(pid)
{
case 0 :
printf("child process is running,curpid is %d,parentpid is %d\n",pid,getppid());
break;
case -1:
printf("process creation failed\n");
break;
default:
printf("parent process is running ,childpid is %d,parentpid is %d\n",pid ,getpid());
break;
}
exit(0);
}
【问题】:
解释stdio.h、unistd.h、sys/types.h头文件的作用?
getpid()、getppid()、fork()的功能是什么?
写出forkgrandchild.c的源代码。
2. 【题目】:diffork.c的创建
【要求】:
上机实现下面diffork.c的运行,体会fork()和vfork()的区别。
【预备知识】:
fork(
您可能关注的文档
- 必修二单元检测.doc
- 必修三一二三单元.doc
- 惠安嘉惠中学高二文科生物(必修三全册)试卷.doc
- 成中医大中医儿科学重点整理.doc
- 我国可再生能源产业运行现状分析.doc
- 意大利罗马荣登2015全球房产关注度排行榜首位.docx
- 我国海上风电行业发展趋势及前景分析.doc
- 承运境内海关监管货物的运输企业车辆注册行政审批事项服务指南.doc
- 抗战与解放战争.doc
- 托福词汇海洋学.doc
- GB/T 29324-2024架空导线用碳纤维增强复合材料芯.pdf
- 《GB/T 29324-2024架空导线用碳纤维增强复合材料芯》.pdf
- GB/T 43905.1-2024焊接及相关工艺中烟尘和气体取样的实验室方法 第1部分:电弧焊中烟尘排放速率的测定和分析用烟尘的收集.pdf
- 《GB/T 43905.1-2024焊接及相关工艺中烟尘和气体取样的实验室方法 第1部分:电弧焊中烟尘排放速率的测定和分析用烟尘的收集》.pdf
- 中国国家标准 GB/T 43905.1-2024焊接及相关工艺中烟尘和气体取样的实验室方法 第1部分:电弧焊中烟尘排放速率的测定和分析用烟尘的收集.pdf
- 中国国家标准 GB/T 18910.21-2024液晶显示器件 第2-1部分:无源矩阵单色液晶显示模块 空白详细规范.pdf
- GB/T 18910.21-2024液晶显示器件 第2-1部分:无源矩阵单色液晶显示模块 空白详细规范.pdf
- 《GB/T 18910.21-2024液晶显示器件 第2-1部分:无源矩阵单色液晶显示模块 空白详细规范》.pdf
- GB/T 43860.1220-2024触摸和交互显示 第12-20部分:触摸显示测试方法 多点触摸性能.pdf
- 中国国家标准 GB/T 43860.1220-2024触摸和交互显示 第12-20部分:触摸显示测试方法 多点触摸性能.pdf
文档评论(0)