fflush(stdout);
sleep
(1);
}
return0;
}
三、主要仪器设备及耗材
Ubuntu操作系统
Vi编辑器
G++编译器
第二部分:
实验调试与结果分析(可加页)
一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)
ctime(将时间和日期以字符串格式表示)
表头文件
#include
定义函数
char*ctime(consttime_t*timep);
函数说明
ctime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。
此函数已经由时区转换成当地时间,字符串格式为“WedJun3021:
49:
081993\n”。
若再调用相关的时间日期函数,此字符串可能会被破坏。
返回值
返回一字符串表示目前当地的时间日期。
time(取得目前的时间)
表头文件
#include
定义函数
time_ttime(time_t*t);
函数说明
此函数会返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数。
如果t并非空指针的话,此函数也会将返回值存到t指针所指的内存。
返回值
成功则返回秒数,失败则返回((time_t)-1)值,错误原因存于errno中。
sleep(让进程暂停执行一段时间)
表头文件
#include
定义函数
unsignedintsleep(unsignedintseconds);
函数说明
sleep()会令目前的进程暂停,直到达到参数seconds所指定的时间,或是被信号所中断。
返回值
若进程暂停到参数seconds所指定的时间则返回0,若有信号中断则返回剩余秒数。
二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)
三、实验小结、建议及体会
这次实验主要是研究Linux中的系统调用方法。
其中主要包括time,ctime,sleep,exit等Linux系统调用使用方法,这次实验加深了自己对Linux下编程的理解,在以后会多多了解Linux系统调用的更多方法,并多加练习。
实验课程名称:
操作系统
实验项目名称
Linux进程控制(fork)
实验成绩
实验者
专业班级
组别
同组者
实验日期
年月日
第一部分:
实验分析与设计(可加页)
一、实验内容描述(问题域描述)
Linux系统进程控制
要求:
掌握Linux系统中进程控制原语fork的使用方法。
内容:
设计C程序,其中主进程创建一个子进程,以特定次序各自执行规定操作后退出。
二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)
#include
#include
#include
usingnamespacestd;
intmain()
{
cout<<"Parentprocessid:
"<pid_tiRet=fork();
if(iRet<0)
cout<<"Createchildprocessfail!
"<elseif(iRet==0)
{
cout<<"I'mchildprocess,andidis"<"<}
else
{
cout<<"Createchildprocesssuccesschild"<<"theidis:
"<}
return0;
}
三、主要仪器设备及耗材
Ubuntu操作体统
Vi编辑器
G++编译
第二部分:
实验调试与结果分析(可加页)
一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)
pid_tfork(void);
(pid_t是一个宏定义,其实质是int被定义在#include中)
返回值:
若成功调用一次则返回两个值,子进程返回0,父进程返回子进程ID;否则,出错返回-1
函数说明:
一个现有进程可以调用fork函数创建一个新进程。
由fork创建的新进程被称为子进程(childprocess)。
fork函数被调用一次但返回两次。
两次返回的唯一区别是子进程中返回0值而父进程中返回子进程ID。
子进程是父进程的副本,它将获得父进程数据空间、堆、栈等资源的副本。
注意,子进程持有的是上述存储空间的“副本”,这意味着父子进程间不共享这些存储空间。
linux将复制父进程的地址空间内容给子进程,因此,子进程有了独立的地址空间。
fork会返回两次:
由于在复制时复制了父进程的堆栈段,所以两个进程都停留在fork函数中,等待返回。
因为fork函数会返回两次,一次是在父进程中返回,另一次是在子进程中返回,这两次的返回值是不一样的。
二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)
三、实验小结、建议及体会
在这次实验之前,我从没使用过fork方法,通过这次实验掌握Linux系统中进程控制原语fork的使用方法。
同时我还发现自己对Linux有很多的不熟悉的地方,在以后会进一步加强。