当前位置: 首页 > news >正文

seo诊断站长专业做包装的电商网站

seo诊断站长,专业做包装的电商网站,深圳保障性住房可以买卖吗,投资做网站利润分析目录 一#xff0c;僵尸进程 1#xff0c;僵尸进程 2#xff0c;僵尸进程的危害 二#xff0c;孤儿进程 1#xff0c;孤儿进程 三#xff0c;进程等待 1#xff0c;进程等待的必要性 2#xff0c;wait 方法 3#xff0c;waitpid 方法 4#xff0c;回收小结…目录 一僵尸进程 1僵尸进程 2僵尸进程的危害 二孤儿进程 1孤儿进程 三进程等待 1进程等待的必要性 2wait 方法 3waitpid 方法 4回收小结 一僵尸进程 1僵尸进程 僵死状态Zombies是一个比较特殊的状态。 当进程退出并且父进程使用wait()系统调用,后面讲 没有读取到子进程退出的返回代码时就会产生僵死(尸)进程 僵死进程会以终止状态保持在进程表中并且会一直在等待父进程读取退出状态代码。 所以只要子进程退出父进程还在运行但父进程没有读取子进程状态子进程进入Z状态 来一个创建维持30秒的僵死进程例子 #include stdio.h #include stdlib.h int main() {pid_t id fork();if (id 0) {perror(fork);return 1;}else if (id 0) { //parentprintf(parent[%d] is sleeping...\n, getpid());sleep(30);}else {printf(child[%d] is begin Z...\n, getpid());sleep(5);exit(EXIT_SUCCESS);}return 0; } 当fork函数返回值父进程和子进程同时启动当子进程运行结束退出进程时父进程还在等待此时子进程一直在等待父进程读取其退出状态代码于是产生了僵尸状态 僵尸状体会造成内存泄漏我们要尽可能避免 2僵尸进程的危害 进程的退出状态必须被维持下去因为他要告诉关心它的进程父进程你交给我的任务我办的怎么样了。可父进程如果一直不读取那子进程就一直处于Z状态是的 维护退出状态本身就是要用数据维护也属于进程基本信息所以保存在task_struct(PCB)中换句话说Z状态一直不退出PCB一直都要维护是的 那一个父进程创建了很多子进程就是不回收是不是就会造成内存资源的浪费是的因为数据结构对象本身就要占用内存想想C中定义一个结构体变量对象是要在内存的某个位置进行开辟空间 内存泄漏?是的 二孤儿进程 1孤儿进程 父进程如果提前退出那么子进程后退出进入Z之后那该如何处理呢 父进程先退出子进程就称之为“孤儿进程” 孤儿进程被1号init进程领养当然要有init进程回收喽。 我们写一个进程来感受一下 #include stdio.h #include unistd.h #include stdlib.h int main() {pid_t id fork();if (id 0) {perror(fork);return 1;}else if (id 0) {//childprintf(I am child, pid : %d\n, getpid());sleep(10);}else {//parentprintf(I am parent, pid: %d\n, getpid());sleep(3);exit(0);}return 0; } fork()函数返回后子进程和父进程同时运行当父进程执行结束并且退出后子进程还在运行此时子进程沦为孤儿 一般孤儿进程最后会被1号init进程领养不会造成内存泄漏 三进程等待 1进程等待的必要性 之前讲过子进程退出父进程如果不管不顾就可能造成‘僵尸进程’的问题进而造成内存泄漏。 另外进程一旦变成僵尸状态那就刀枪不入“杀人不眨眼”的kill -9 也无能为力因为谁也没有办法杀死一个已经死去的进程。 最后父进程派给子进程的任务完成的如何我们需要知道。如子进程运行完成结果对还是不对 或者是否正常退出。 父进程通过进程等待的方式回收子进程资源获取子进程退出信息 2wait 方法 pid_t wait(int*status); 返回值 成功返回被等待进程pid失败返回-1。 参数 输出型参数获取子进程退出状态,不关心则可以设置成为NULL #include stdio. h #include unistd.h #include stdlib.h #includesys/types.h #includesys / wait.h int main() {pid_t id fork();if (id 0) {perror(fork);return 1;}else if (id 0) {//parentprintf(child[%d] is sleeping...\n, getpid());sleep(5);exit(3);}int status 0;pid_t rid wait(status);if (rid 0){printf(parent[%d] is begin Z...\n, rid);sleep(10);}else {printf(进程失败:rid:%d\n, rid);}return 0;} 这样子 wait 会自动及时回收子进程不会形成僵尸不会造成内存泄漏 3waitpid 方法 pid_ t waitpid(pid_t pid, int *status, int options); 返回值 当正常返回的时候waitpid返回收集到的子进程的进程ID 如果设置了选项WNOHANG,而调用中waitpid发现没有已退出的子进程可收集,则返回0 如果调用中出错,则返回-1,这时errno会被设置成相应的值以指示错误所在 参数 pid Pid-1,等待任一个子进程。与wait等效。 Pid0.等待其进程ID与pid相等的子进程。 status: WIFEXITED(status): 若为正常终止子进程返回的状态则为真。 查看进程是否是正常退出 WEXITSTATUS(status): 若WIFEXITED非零提取子进程退出码。查看进程的退出码 options: WNOHANG: 若pid指定的子进程没有结束则waitpid()函数返回0不予以等待。若正常结束则返回该子进 程的ID。 #include stdio. h #include unistd.h #include stdlib.h #includesys/types.h #includesys / wait.h int main() {pid_t id fork();if (id 0) {perror(fork);return 1;}else if (id 0) {//parentprintf(child[%d] is sleeping...\n, getpid());sleep(5);exit(3);}int status 0;pid_ t rid waitpid(-1,status,0);if (rid 0){printf(parent[%d] is begin Z...\n, rid);sleep(10);}else {printf(进程失败:rid:%d\n, rid);}return 0;} 4回收小结 如果子进程已经退出调用wait/waitpid时wait/waitpid 会立即返回并且释放资源获得子进程退出信息。 如果在任意时刻调用 wait/waitpid子进程存在且正常运行则进程可能阻塞。 如果不存在该子进程则立即出错返回。
http://www.laogonggong.com/news/119783.html

相关文章:

  • wordpress网站流量统计河南郑州网站建设
  • app网站欣赏腾讯云服务器1元
  • 网站制作费会计分录怎么做网站设计的关键
  • 杭州专业网站设计制作开发者选项
  • 宁波网站推广制作做网站3年
  • app推荐网站南京小程序开发费用
  • 河南企业网站建设价格哈尔滨营销网站建设
  • 做科普网站app与移动网站开发资料
  • 小白测评做网站齐齐哈尔建设网站
  • 国外网站建设现状图分析网页开发外包
  • 常州网站搭建公司WordPress网站自媒体模板
  • 如何做转运网站滨州哪里做网站
  • 国内做网站的企业九江建设公司网站
  • 网站 推广商系统 设计php做不了大型网站吗
  • 推广网站有哪些比较好wordpress rrs
  • 快速搭建企业网站响应式网站 向下兼容
  • linux下网站搭建oss静态网站托管
  • ASP.NET2.0网站开发全程解析宝应宝楠国际学校
  • 南通网站建设项目北京百度推广开户
  • 网站程序哪个好永嘉县住房和城乡建设局网站
  • 成都网站建设 工资wordpress 作品展
  • wordpress修改站点地址网站触屏版
  • 肥东网站制作o2o电商网站
  • 门户网站建设费用惠州广告公司排名
  • 东莞品牌网站设计一个公司可以做几个网站
  • 福田网络推广公司吐鲁番seo快速排名
  • 卖挂的网站怎么做运动分类的网站设计论文
  • 下载全网搜seo优化方案项目策划书
  • 正规的合肥网站建设价格常德网站制作
  • 官方网站建设建议深圳建筑设计事务所