c语言进程控制实验报告,操作系统进程控制实验报告..doc

操作系统进程控制实验报告.

操作系统实验报告

实验题目:进程控制

专 业 计算机科学与技术

学 生 姓 名

班 级 学 号

指 导 教 师

指 导 单 位 计算机学院

日 期 2014年11月13日

教师评语

教师签名:

年 月 日成绩评定备 注一、实验目的

1.学习和了解进程控制的基本和常用的系统调用

fork??wait??sleep??exit??exec??等等

2. 查看 /usr/src/include/sched.h中的task_struct 数据结构,并分析Linux 操作系统进程状态。

3.通过进程创建的应用实例,深刻理解进程创建的过程

将以下例题输入运行,并分析运行结果

程序例题1

#include

#include

#include

int main(void)

{

pid_t pid;

int data=5;

if((pid=fork())<0)

{

printf("fork error\n");

exit(0);

}

else if(pid==0)

{

data--;

printf("child\'s data is:%d\n",data);

exit(0);

}

else

{

printf("parent\'s data is:%d\n",data);

}

exit(0);

}

程序例题2

用fork创建一个子进程,由其调用execve启动shell命令ps查看系统当前的进程信息

#include

#include

#include

main( )

{

??pid_t pid;

??char *path="/bin/ps";

??char *argv[5]={ "ps","-a","-x",NULL};

printf(揜un ps with exec"ve by child process:\n?;

牋if((pid=fork( ))<0)

{

printf(揻orxeck error!?;

牋exit(0);

}

else if (pid==0)

{

牋if(execve(pat揻orh,argv,0)<0)

牋 {

牋牋 printf(揻ork error!?;

牋牋 exit(0);

xecve(p牋 }

printf(揷hild is ok!\n?;

exit(0);

}

wait( );

printf(?xecit is ok!\n?;

exit(0);

}

3 .创建一个共享内存,实现一个生产者进程写共享内存,一个消费者进程读共享内存,并在写前读后输出写和读的内容。

4.创建一个共享文件,实现一个写者进程写文件,2个读者在写者写后分别读出文件的内容,并给出读后评价。

二、实验指导

Linux中与进程控制相关的几个主要系统调用

名/格式/参数功??能返回值的解释fork( )、vfork( ) 创建一个字进程 对父进程:返回子进程号

对子进程:返回0

错误:返回-1 #include

execve(char *file,char **argv,char **envp) 用指定程序覆盖当前程序代码 正确:0

错误:-1 #include

#include

pid_t wait(int *statloc) 等待进程终止 正确:子进程的ID

错误:-1 getpid( )、getppid( ) 获得进程号 #include

void exit(int status) 进程正常结束

三、实验步骤(附程序原码)

实验一:创建文件wang.c,编写C语言程序,实现在程序运行时通过系统调用fork()创建两个子进程,使父,子三进程并发进行,父亲进程执行时屏幕显示“parent”,儿子进程执行时屏幕显示“son”,女儿进程执行时屏幕显示“daugher”。程序如下:

(进程一)#inclu

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值