• 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 十.解释器文件
    有时候,不小心知道了一些事,才发现自己所在乎的事是那么可笑。
  • 相关阅读:
    93.快速搭建Web环境 Angularjs + Express3 + Bootstrap3
    92.bower 需要git
    91.Bower : ENOGIT git is not installed or not in the PATH 解决方法
    5.Git使用详细教程
    4.git "Could not read from remote repository.Please make sure you have the correct access rights."解决方案
    2.windows下安装git
    Git常用命令
    每天一个linux命令(50):crontab命令
    crontab 不能执行git命令问题备忘
    Git PHP提交
  • 原文地址:https://www.cnblogs.com/axjlxy/p/6724266.html
Copyright © 2020-2023  润新知