博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux -进程-孤儿进程-僵尸进程-预防僵尸进程
阅读量:6453 次
发布时间:2019-06-23

本文共 1276 字,大约阅读时间需要 4 分钟。

  Linux常见进程命令:

 ps 查看系统中的进程 如:ps -af   ps -ef 
 top 动态的现实系统中的进程 
 nice  按用户的指定的优先级运行
 renice 改变正在运行的进程的优先级 
 crontab 用于安装、删除或者列出用于驱动cron后台驱动 
 kill 终止进程 
 bg 将挂起的进程放到后台执行

 

 
  1. # include <unistd.h> 
  2. # include <sys/stat.h> 
  3. # include <sys/types.h> 
  4. # include <fcntl.h> 
  5. # include <stdio.h> 
  6. # include <stdlib.h> 
  7. # include <string.h> 
  8.   
  9. # define ERR_EXIT(m) \ 
  10.     do \ 
  11.     { \ 
  12.         perror(m); \ 
  13.         exit(EXIT_FAILURE); \ 
  14.     }while(0) 
  15.   
  16. int main(int argc,char *argv[]) 
  17.     signal(SIGCHLD,SIG_IGN); 
  18.     printf("before fork pid = %d\n",getpid()); 
  19.     pid_d pid; 
  20.     pid = fork(); 
  21.     if(pid == -1) 
  22.     { 
  23.         ERR_EXIT("fork error"); 
  24.     } 
  25.      
  26.     if(pid > 0) 
  27.     { 
  28.         printf("this is parent  pid =%d childpid = %d\n",getpid(),pid); 
  29.         sleep(1);        
  30.     } 
  31.     else if (pid == 0)/*此为父进程*/ 
  32.     { 
  33.         printf("this is child pid=%d parentpid = %d\n",getpid(),getppid()); 
  34.     }
  35.  
  36.  
  37. return 0;    
  38.  

 

 

 

fork() 一次调用两次返回

fork()成功,创建了一个进程副本,意味着有两个进程了,

fork(),两次返回是在不同的地址空间返回的,是在各自的进程地址空间返回的、

 

A

fork();

A'

 

 

fork系统调用后,父子进程交替进行

孤儿进程,父进程先结束,留着子进程

托孤给1号进程也就是 init,父进程变成了 init

defunct  僵尸进程,不可能处于活跃状态

子进程先退出,父进程还未查询子进程的退出状态,此时子进程就处于僵尸状态

 

避免僵尸进程的方法:

子进程结束时发生信号给父进程

# include <signal.h>

signal(SIGCHLD,SIG_IGN);

 

 

父进程先退出,子进程就成为孤儿进程,父进程变成了1号进程

子进程先退出,父进程尚未查询子进程的状态,成为僵尸进程

 

 

 

代码段+数据段+PCB

代码段可以共享

写时复制copy on write

 

 

 

需要的malefile文件:

.PHONY:clean all

CC=gcc

CFLAGS=-Wall -g

BIN=01cop

all:$(BIN)

%.O:%.c

$(CC) %(CFLAGS) -c $< -o  $@

clean:

rm -f *.o $(BIN)

 

 

 

 

 

 

 

 

 

转载地址:http://siyzo.baihongyu.com/

你可能感兴趣的文章
awk的常见用法
查看>>
mysql语句技巧
查看>>
background url base64
查看>>
Selenium
查看>>
mysql触发器
查看>>
linux常见问题
查看>>
SQL2012(聚合函数+排序函数)用法介绍
查看>>
注意数组传值,传到后台,
查看>>
Mybatis入门
查看>>
django之Model的内部类Meta选项说明
查看>>
UTF的字节序和BOM
查看>>
IE8 没有内容的盒子,如果有定位,浮现在其他盒子上 可能会有点击穿透没有作用的情况...
查看>>
windows查看进程
查看>>
Ubuntn16.04+OpenCV3.1+CUDA8.0+cudnn5.1+caffe配置及问题集锦
查看>>
POJ 3207 Ikki's Story IV - Panda's Trick【2-SAT】
查看>>
HDoj 2602 Bone Collector 01背包
查看>>
spring 配置中相关属性的含义:
查看>>
CSS(二)样式优先级别和css的单位刻度
查看>>
第六章 循环
查看>>
内置函数
查看>>