首页 > 其他 > 详细

【OS学习笔记】

时间:2020-05-17 12:33:36      阅读:42      评论:0      收藏:0      [点我收藏+]

操作系统老师和操作系统实践老师都讲的太好了!耐心且细致!

IO

为什么不把当前目录放入PATH环境变量

例如如果PATH变量为:.:./bin:./user/bin

是为了提高安全性,如果是这样的话执行ls命令就会执行当前路径上的ls而不是系统展示文件列表的ls命令,这样如果把一个恶意程序命名为ls系统就会执行恶意程序

技术分享图片

进程

创建两个进程,并不是两个返回值,而是父进程和子进程各自的返回值

pit_t pid;
pid = fork();
if(pid == 0)	//子进程
{
	printf("child pid:%d\n",pid);
	child();
}
else
{
    printf("parent pid:%d\n",pid);
    parent();
}

打印结果:

技术分享图片

可以这样理解:

当创建子进程时,子进程从fork返回处开始执行,对于子进程来说并没有执行fork()函数,又要从返回值处开始执行,os规定给了一个0作为返回值,父进程执行fork()函数,返回值为子进程的pid。所以输出两次的pid并不是函数fork()的两个返回值。

子进程和父进程同时运行,可能打印出来子进程的getppid的返回值为1

因为当子进程和父进程同时运行时,如果父进程先运行完,父进程就结束了,子进程由init进程(pid为1)收养,此时子进程打印getppid()的结果为1,

代码:

pid_t pid;
pid = fork();
if(pid == 0)	//子进程
{
	int x = 0;	//拖延时间,使父进程先执行完
	printf("In child process: pid = %d, mypid = %d, myppid = %d\n",pid,getpid(),getppid());
}
else
{
	printf("In parent process:pid = %d, mypid = %d, myppid = %d\n",pid,getpid(),getppid());
}

结果:

技术分享图片

【OS学习笔记】

原文:https://www.cnblogs.com/wwj321/p/12904672.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!