操作系统进程实验.pdf

操作系统进程实验.pdf

ID:51497466

大小:1.08 MB

页数:6页

时间:2020-03-25

操作系统进程实验.pdf_第1页
操作系统进程实验.pdf_第2页
操作系统进程实验.pdf_第3页
操作系统进程实验.pdf_第4页
操作系统进程实验.pdf_第5页
资源描述:

《操作系统进程实验.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、金宇聪操作系统实验报告PB09210228实验要求:在linux中,编写一个程序,该程序能创建一个进程父进程输出当前的时间和日期父进程输出自己的进程号和子进程的进程号子进程输出自己的进程号让子进程执行另外一个程序(例如date)提示:getpid,fork,execve提供上机报告,说明:编写程序的过程中参考的材料或者网页编写程序的过程中出现的错误,解决问题的方法附上源代码和运行结果的截图实验设计:1.源代码截图:金宇聪操作系统实验报告PB092102282.调用的重要库函数:(1)Getpid()函数功能:取得进程识别码相关函数:fork,kill,getpid头文件:旧版本:

2、unistd.h,在VC++6.0下可以用process.h函数原型:旧的原型为pid_tgetpid(void);,推荐使用int_getpid(void);这种形式。注意,函数名第一个字符是下划线。函数说明:getpid函数用来取得目前进程的进程识别码,许多程序利用取到的此值来建立临时文件,以避免临时文件相同带来的问题。返回值:目前进程的进程识别码(2)Fork()函数定义:pid_tfork(void);(pid_t是一个宏定义,其实质是int被定义在#include中)返回值:若成功调用一次则返回两个值,子进程返回0,父进程返回子进程ID;否则,

3、出错返回-1函数说明:一个现有进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为子进程(childprocess)。fork函数被调用一次但返回两次。两次返回的唯一区别是子进程中返回0值而父进程中返回子进程ID。子进程是父进程的副本,它将获得父进程数据空间、堆、栈等资源的副本。注意,子进程持有的是上述存储空间的“副本”,这意味着父子进程间不共享这金宇聪操作系统实验报告PB09210228些存储空间。linux将复制父进程的地址空间内容给子进程,因此,子进程有了独立的地址空间。(3)Execve()表头文件:#include定义函数:intex

4、ecve(constchar*filename,char*constargv[],char*constenvp[]);函数说明:execve()用来执行参数filename字符串所代表的文件路径,第二个参数是利用数组指针来传递给执行文件,并且需要以空指针(NULL)结束,最后一个参数则为传递给执行文件的新环境变量数组。返回值:如果执行成功则函数不会返回,执行失败则直接返回-1,失败原因存于errno中。3.出现的错误及解决方案:主要是编写execve函数执行date时,各种报错,郁闷了好一阵。Execve函数的第二个参数要求为char*,最开始学书上的直接写execve(/bin

5、/date,“date”,NULL),果断报错。之后进行修改,仍有问题,因为{“date”,NULL}为字符型常量,将其赋给字符型变量是不合法的。于是将其复制,为变量,再传入函数调用。搞定。字符串数组伤不起。写到这里才想起来c++里有一个强大的东西叫string类居然忘了,眼泪哗哗的TT。如果用string类相信效果更好一点。金宇聪操作系统实验报告PB09210228实验结果:运行结果截图:金宇聪操作系统实验报告PB09210228参考资料:金宇聪操作系统实验报告PB09210228部分参考《操作系统概念》(第七版影印版)P92figure3.10代码

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。