process_control

  1 進程控制
  2 
  3 ps aux
  4 ps axj
  5 ps axf
  6 ps axm
  7 
  8 一.進程標識符
  9     pid_t ---->long int
 10     進程的獨一無二的標識
 11 
 12     0    調用進程(內核)
 13     1    init進程(用戶態全部進程的祖先進程)
 14 
 15     getpid(2);
 16     getppid(2);
 17 
 18 進程的狀態
 19     S    可中斷的睡眠態
 20     R    運行態
 21     D    不可中斷的睡眠態
 22     T    中止態
 23     X    終止態
 24     Z    殭屍態
 25 進程優先級
 26     s    會話組長
 27     l    多線程
 28     <    高優先級
 29     N    低優先級
 30     +    在前臺進程組
 31 
 32 二.fork(2)
 33 父子進程之間的不一樣:
 34     <1>pid
 35     <2>ppid
 36     <3>記錄鎖
 37     <4>資源使用量和進程時間清零
 38     <5>未決信號
 39     <6>未決鬧鐘
 40     <7>fork返回值
 41 
 42 fork()建立子進程
 43     <1>不能保證哪一個進程先運行
 44     <2>採用copy-on-write    
 45     <3>在父進程中返回子進程id,子進程中返回0
 46 
 47 vfork()建立子進程
 48     <1>保證子進程先運行
 49     <2>共享父進程數據段及棧
 50     <3>用_exit(2)或者_Exit(2)終止進程    
 51 
 52 孤兒進程
 53 殭屍進程
 54 
 55 三.wait(2)和waitpid(2);
 56     
 57     wait(&status); == waitpid(-1, &status, 0);
 58                     
 59 四.exec(3);
 60     execl();
 61     execv();
 62     execlp();
 63     execvp();
 64     execle();
 65 
 66 五.
 67 進程關係
 68     1.會話(session):一個或多個進程組組成的
 69     getsid(2);
 70     setsid(2);
 71 
 72     2.進程組:一個或多個進程組成的
 73     getpgrp(2);
 74     getpgid(2);
 75     setpgid(2);
 76 
 77 守護進程
 78     <1>進程組的leader PGID == PID
 79     <2>會話的leader      SID == PID            
 80     <3>脫離控制終端
 81 
 82 建立守護進程步驟:
 83     <1>umask(0);
 84     <2>chdir("/");
 85     <3>關閉0,1,2
 86     <4>child-->setsid();
 87 
 88 log日誌的書寫
 89     openlog();
 90     syslog();
 91     closelog();
 92 
 93     daemon(3);
 94 
 95 六.競爭條件
 96     parent--->wait();
 97     child--->getppid() == 1
 98 
 99 七.system(3)
100     fork()-->exec("/bin/sh", "sh", "-c", "ls -l", NULL)    
101 
102 八.更改用戶id和組id
103     實際用戶id
104     有效用戶id:校驗文件權限     u+s
105     保存設置用戶id    
106     
107     setuid(2);
108     getuid(2);
109     geteuid(2);
110 
111 九.進程時間
112     times(2);
113 
114     real: >= sys+user;
115     sys:
116     user:
117 
118 十.解釋器文件
本站公眾號
   歡迎關注本站公眾號,獲取更多信息