- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统实验2(第2题).
院 系:
专 业:
年 级:
课程名称:
指导教师:
组 号:
学 号:
姓 名:
年 月 日
年级 ? 专 业 ? 班级 ? 组号 实验室 日期 ?? 实验
名称 ?? 实
验
内
容
分项内容
实验级别 小 组 成 员 姓名 学号 组内分工 自我评分 教师评分 ? ? ? ? ? 小
组
成
绩
评
定
教师签名:
年 月 日
实验分项2 ?实验二 进程控制与通信管理
? 分项2. Linux 系统常用进程创建与管理的系统调用 实
验
目
的 ?1.加深对进程概念的理解,明确进程和程序的区别2.进一步任识并发进程的实质。ps 监视进程工具ps 提供了很多的选项参数,常用的选项是组合是aux 或lax,还有参数f的应用;
一:[root@localhost ~]# ps -aux |more 用 | 管道和 more 连接起来分页查看;
[root@localhost ~]# ps -aux ps001.txt
[root@localhost ~]# more ps001.txt
这里是把所有进程显示出来,并输出到ps001.txt文件,然后通过more 来分页查看
pgrep
pgrep 是通过程序的名字来查询进程的工具,一般是用来判断程序是否正在运行。例:
[root@localhost ~]# pgrep -lo httpd
4557 httpd
[root@localhost ~]# pgrep -ln httpd
4566 httpd
[root@localhost ~]# pgrep -l httpd
4557 httpd
4560 httpd
4561 httpd
4562 httpd
4563 httpd
4564 httpd
4565 httpd
4566 httpd
[root@localhost ~]# pgrep httpd
4557
4560
4561
4562
4563
4564
4565
4566
创建进程:
每个进程都有一个ID,那么我们怎么得到进程的ID呢?系统调用getpid()可以得到进程的ID。
#include unistd;
pid_t getpid(void);
在 系统中,用户创建一个新进程的唯一方法就是调用系统调用fork。调用 fork 的进程称为父进程,而新创建的进程叫做子进程。系统调用的语法格式: pid = fork()
程序如下:
#includestdio.h
#includeunistd.h
#includestdlib.h
#includesys/pes.h
#includesys/wait.h
在语句pid=fork()之前,只有一个进程在执行这段代码,但在这条语句之后,就变成两个进程在执行了,这两个进程的代码部分完全相同,将要执行的下一条语句都是if(pid==0)…。
两个进程中,原先就存在的那个被称作“父进程”,新出现的那个被称作“子进程”。父子进程的区别除了进程标志符(process ID)不同外,变量pid的值也不相同,pid存放的是fork的返回值。for调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值: 在父进程中,fork返回新创建子进程的进程ID; 在子进程中,fork返回0; 如果出现错误,fork返回一个负值;
如果pid小于0,说明出现了错误;pid==0,就说明fork返回了0,也就说明当前进程是子进程,就去执行printf(I am the child!”) 否则(else),当前进程就是父进程,执行printf(I am the parent!)。#includestdio.h
#includeunistd.h
#includestdlib.h
main()
{
int
文档评论(0)