作业帮 > 综合 > 作业

关于fork()#include #include int main() { time_t t;time(&t);int

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/21 01:28:05
关于fork()
#include
#include
int main()
{
time_t t;
time(&t);
int flag=fork(),i;
if(flag==0)
{
for(i=0;i
原因:sleep(1000)时间过长 ,在子进程没运行完时父进程已经运行完,你可以把1000改成1测试下 会打印三次,但是由于父进程已经运行完,会回到shell下继续输出,其实你sleep(1000) 也能打印三次,不过要等 1000s,你可以用ps 命令查看进程 “./a.out” 的进程一定还在,用 kill -9 + 进程id 可杀死该进程;
如果非要在子进程打印三次每次1000s 可以让父进程等待子进程结束后再结束;
另外:fork一个子进程时,父子进程不一定先运行哪一个,但是在ubuntu系统下大多数时候会先运行父进程,记住不是确定先运行!
再问: 你说的很明白。。我把它改成1就好了。。我是UNIX系统,但是我还想问一下。。如何把上面这些过程整体再循环5次?就是每显示一次Current time:
就显示3次时间。。我自己直接在int flag=fork(),i;那里到最后再加一个循环就先输出5次Current time:再输出15次时间。。如何使得运行一个父进程立刻就运行一个子进程,而不是所有父进程运行完了再运行子进程?多谢了。。
再答: 你说的问题可以实现,但是这么提问(有了问题来提问解决)不是个办法,这样时间太久没效率,建议你看一下进程这块,给你推荐本书吧《UNIX环境高级编程,或者来我的群,号在我个人资料里有