实际用户:表示你是谁,谁运行起来,用于标识信息eg:身份证,邀请函身份,非会员
有效用户:对某种资源是否具有某种权限,进程可能访问某些资源,普通用户不忍,身份变更才可访问资源
例如:在Linux系统下,root用户或普通用户都可以使用passwd命令来修改密码,修改密码主要通过修改etc文件来实现,而shadow文件权限全空,只有root有权限修改此文件。故当普通用户执行passwd命令时,它的权限在一瞬间得到提升,运行时以拥有者权限运行。
猜测运行结果,会打印几条消息??
#include<stdio.h> #include<unistd.h> #include<sys/types.h> int main() { int i=0; pid_t id; for(;i<2;++i) { id=fork(); if(id==0){//child printf("pid: %d,ppid: %d\n",getpid(),getppid()); } else if(id>0){//father printf("pid: %d,ppid: %d\n",getpid(),getppid()); } } return 0; }
运行结果显示:用fork()创建子进程后执行的是和父进程相同的程序(但可能执行不同的代码分支:if条件判断分流)
后面的ppid为1显示他们变成了孤儿进程,被1号进程领养。
#include<stdio.h> #include<unistd.h> #include<sys/types.h> int main() { int i=0; pid_t id; for(;i<2;++i) { id=fork(); if(id==0){//child printf("pid: %d,ppid: %d\n",getpid(),getppid()); } else if(id>0){//father printf("pid: %d,ppid: %d\n",getpid(),getppid()); } } printf("pid: %dHello\n",getpid()); return 0; }
时间: 2024-10-12 10:59:46