linux c 进程学习
来源:互联网 发布:淘宝助理创建宝贝模板 编辑:程序博客网 时间:2024/06/10 07:34
1.fork
由于fork后的父进程与子进程的优先级是一样的,所以会存在父进程已经退出了而子进程还在执行,这时候的子进程就是孤儿进程,会被init进程收养,所以这时候getppid得到的1。
int main(){pid_t pid;pid = fork();switch(pid){case 0:printf("孩子进程,pid:%d,父进程pid:%d\n",getpid(),getppid());break;case -1:printf("进程创建失败。\n");break;default:printf("父亲进程,pid:%d,孩子进程pid:%d\n",getpid(),pid);wait(NULL);//等待子进程 防止孤儿进程break;}exit(0);}
2.vfork
由vfork也是用来创建进程,但是子进程是共享父进程的地址空间,也就是两者的变量是共享的,而fork是复制的两者不共享。vfork会保证子进程先执行,当子进程 exec 或者 exit后才可能会被调度,如果未调用exec 或者 exit 将出现段错误。
int glab_var = 0;int main(){int i=0;int var = 0;pid_t pid;pid = vfork();switch(pid){case 0:printf("pid:%d\n",getpid());printf("ppid:%d\n",getppid());printf("孩子 i:%d\n",i);while(i<5){i++;var++;glab_var++;}printf("孩子 var:%d,glab:%d\n",var,glab_var);exit(0);break;case -1:exit(0);break;default:printf("pid:%d\n",getpid());printf("cpid:%d\n",pid);printf("父亲 i:%d\n",i);i=0;while(i<3){i++;var++;glab_var++;}printf("父亲 var:%d,glab:%d\n",var,glab_var);//wait(NULL);exit(0);break;}}
阅读全文
1 0
- linux c 进程学习
- linux之C编程学习——进程,进程,进程!
- linux之C编程学习——进程,进程,进程!
- Linux c学习--进程基础学习
- Linux+C学习笔记之进程管理
- Linux c学习之进程控制
- linux 0.11 内核学习 -- sched.c,调度进程。
- 在C中的学习,linux 进程间的通信
- linux c语言学习笔记之守护进程
- linux C 学习笔记 持续更新ing 进程
- linux下C 编程学习之多进程编程(一)
- Linux C学习笔记——进程控制
- Linux C学习笔记——进程间通信
- Linux C语言编程学习笔记 (1)进程控制入门
- linux c语言学习笔记之守护进程
- linux c学习笔记----进程创建(fork,wait,waitpid)
- linux 0.11 内核学习 -- sched.c,调度进程。
- Linux C——进程学习的笔记
- Mysql 出现Error 1118的一种解决方法
- 数据模型
- 推荐系统中冷启动问题
- Linux下安装redis-2.8.3
- MYSQL BLOB 字段大小以及个数的限制测试。
- linux c 进程学习
- C语言基础之编码规范---排版
- 对于Git中用命令删除分支时的注意事项
- JavaEE复习笔记(7)——Struts:异常处理
- TP5生命周期
- 内存管理几个程序实例
- 50道Java线程面试题
- 32STL之Set和multiset容器
- BZOJ 2339: [HNOI2011]卡农