创建进程,销毁僵尸进程
来源:互联网 发布:金字塔软件使用说明书 编辑:程序博客网 时间:2024/06/07 14:35
//创建进程
#include <stdio.h>#include <unistd.h>//父子进程共享同一段代码,但在不同的内存结构中int gval=10;int main(int argc,char *argv[]){pid_t pid;int lval=20;gval++,lval+=5;pid=fork();//调用fork函数床创建进程,父进程返回子进程的ID 子进程返回0if(pid==0)gval+=2,lval+=2;elsegval-=2,lval-=2;if(pid==0)printf("Child Proc: [%d,%d] \n",gval,lval);elseprintf("Parent Proc: [%d,%d]\n",gval,lval);return 0;}
//创建僵尸进程
#include <stdio.h>#include <unistd.h>int main(int argc,char *argv[]){pid_t pid=fork();if(pid==0){puts("Hi,I am a child process");}else{printf("Child Process ID: %d \n",pid);sleep(30);}if(pid==0)puts("End child process");elseputs("End parent process");return 0;}
//销毁僵尸进程wait
#include <stdio.h>#include <sys/wait.h>//因为要调用wait()函数,销毁子进程要由父进程主动管理,wait函数可能会引起阻塞#include <unistd.h>//exit,return的返回值将传递给操作系统,而操作系统不会销毁子进程,直到把这些值传递给产生该子进程的父进程#include <stdlib.h>//所以产生僵尸进程的正是操作系统//如果父进程终止,处于僵尸状态的子进程将同时销毁int main(){int status;pid_t pid=fork();if(pid==0){return 3;}else{printf("Child One PID: %d \n",pid);pid=fork();if(pid==0){exit(7);}else{printf("Child Two PID: %d \n",pid);wait(&status);//利用wait()函数销毁僵尸进程printf("status:%d \n",status);//单独输出status并没什么意义,&status指向的单元还包含其他信息wait(&status);//利用wait()函数销毁僵尸进程printf("status:%d \n",status);/*if(WIFEXITED(status))printf("Child one send: %d \n",WEXITSTATUS(status));wait(&status);if(WIFEXITED(status))printf("Child two send: %d \n",WEXITSTATUS(status));*/sleep(30);}}return 0;}
//销毁僵尸进程waitpid
#include <stdio.h>#include <unistd.h>#include <sys/wait.h>int main(){int status;pid_t pid=fork();if(pid==0){sleep(15);return 24;}else{while(!waitpid(-1,&status,WNOHANG))//-1可以等待任意子进程终止,WNOHANG即使没有终止的子进程也不会阻塞而是返回0并退出函数{//成功时返回终止的子进程ID,失败返回-1sleep(3);puts("sleep 3sec.");}if(WIFEXITED(status))printf("Child send %d \n",WEXITSTATUS(status));}return 0;}
阅读全文
0 0
- 创建进程,销毁僵尸进程
- 进程创建与销毁
- UNIX多进程 - 销毁僵尸进程 - wait()和waitpid()函数
- UNIX多进程 - 销毁僵尸进程 - wait()和waitpid()函数
- 创建自己的僵尸进程
- 创建和销毁子进程
- 创建和销毁子进程
- 进程创建fork与vfork,孤儿进程,僵尸进程
- Linux进程管理、进程创建、线程实现、僵尸进程
- 僵尸进程
- 僵尸进程
- 僵尸进程
- 僵尸进程
- 僵尸进程
- 僵尸进程
- 僵尸进程
- 僵尸进程
- 僵尸进程
- JavaScript入门基础--数据类型
- pycharm打开html文件及在HTML文件中加载图片的问题
- 【剑指offer】旋转数组的最小数字
- 优化UITableViewCell高度计算的那些事
- 远程调用过程JSON数据过大,连接超时
- 创建进程,销毁僵尸进程
- 双边滤波器的原理及实现
- CF#808 B. Average Sleep Time(水题)
- 单点登录系统
- bootstrap-loader使用过程中遇到的几个坑爹问题
- 数据挖掘-C4.5算法
- LSM树(Log-Structured Merge Tree)存储引擎
- UIKit性能调优实战讲解
- vuejs router history 配置到iis