![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
进程学习
JoshuaCL
这个作者很懒,什么都没留下…
展开
-
父子进程fork之后的一些注意点
fork()函数调用之后子进程从fork()语句之后开始执行,其原因是子进程复制了程序计数器 在刚刚fork之后父子进程之间的数据段(全局变量),栈段(局部变量),堆段(动态内存),代码段,程序计数器等都是相同的(在当前的linux版本中遵从的是读时共享写时复制的原则) 父子之间不同的是进程ID,fork函数的返回值 共享的是文件描述符以及mmap建立的映射区 全局变量是写时复制的例...原创 2019-06-05 20:51:06 · 791 阅读 · 0 评论 -
wait函数
三个功能阻塞等待子进程退出 回收子进程残留资源 获取子进程结束状态(退出原因)函数原型:pid_t wait(int *status);可以使用wait函数传出的参数status来保存进程的退出状态,借助宏函数来进一步判断进程终止的具体原因if(WIFEXITED(status))//结束状态 printf("status:%d\n", WEXITSTATUS(stat...原创 2019-06-06 11:27:31 · 163 阅读 · 0 评论 -
父子进程之间的共享资源
在现有的Linux内核在实现fork()函数时往往是一种"写时赋值"的情况 父子之间的进程ID是不同的,其余大部分资源都是被复制的 在下面的例子中可以看到,全局变量,局部变量,动态申请的变量都是复制的,互不影响#include <stdio.h>#include <stdlib.h>#include <unistd.h>/*父子进程的共享...原创 2019-06-03 10:26:48 · 4240 阅读 · 0 评论 -
僵尸进程
僵尸进程---子进程已经退出,但是父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中int main(){ /*fork一个子进程*/ pid_t pid = fork(); if (pid > 0)/*父进程*/ { printf("int parent process,sleep for one miniute...z...原创 2019-06-03 10:57:38 · 72 阅读 · 0 评论 -
使用wait函数回收子进程
进程一旦调用了wait函数,就立即阻塞周记,用wait自动分析是否当前的进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程,wait就会收集这个子进程的消息,并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一直阻塞在这里,直到有一个出现为止。//头文件#include <sys/types.h>#include <sys/wait.h&g...原创 2019-06-03 11:13:15 · 677 阅读 · 0 评论 -
waitpid笔记
//头文件#include <sys/types.h>#include <sys/wait.h>//函数原型pid_t waitpid(pid_t pid,int *status,int options);从本质上讲,waitpid是wait的封装,waitpid只是多出了两个可由用户控制的参数pid和options,为编程提供了灵活性参数的意义:...原创 2019-06-03 11:37:56 · 97 阅读 · 0 评论 -
linux多进程拷贝文件
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/types.h>#include <sys/wait.h>#include <fcntl.h>#include <sys/stat.h>#include <...原创 2019-06-11 20:42:07 · 285 阅读 · 0 评论