进程

【1】进程
    进程是一个抽象实体,当系统在执行某程序时,分配和释放的各种资源
    进程是一个程序的一次执行的过程
【2】进程和程序的区别
进程:动态的,占用内存,占有系统分配资源,具有
进程,分级创建的,在启动流程最后。会加载init进程(liunx的第一个进程)其他所有进程都是从此开始
每一个PID表示唯一的一个进程,进程号是有限资源
【3】进程的相关操作
ps aux 显示进程的详细信息
进程状态:
        S:睡眠态
        s:表示有子进程
        <:优先级较高
        N:优先级较低
        l:有链接
        +:前台进程
        R:运行态
        Z:僵尸态
        T:停止态
top:动态显示进程信息
        NI:进程执行优先级
                    -20~19 其中-20优先级最高
      renice:修改优先级(正在运行的)
        renice 10 PID
chtrl +z 让程序进入停止态
fg 恢复停止态
bg 后台运行

在 程序或添加 & 让程序在后台运行
让程序以制定优先级运行
nice -3 ./a.out //让a.out以优先级为3来运行
kill -9 PID 杀死一个进程
【4】进程的类型
PCB进程控制块
每个进程单独占用4G的地址空间。它所属的线程共享这4G空间0-3G属于用户空间3-4G属于内核空间。
虚拟地址相当于将一小块内存扩大(映射)到4G的地址空间。保证了进程间的独立性。不会影响其他进程

【5】进程的创建

1---创建一个进程
#include <unistd.h> //所需头文件
  pid_t fork(void);
功能:创建一个进程
参数:无
返回值:0:代表执行子进程
             >0(创建的子进程pid):代表执行父进程
            -1:代表创建进程出错
返回值类型 pid_t  ==  int
执行顺序:父子进程同时抢占时间点,先运行那个不一定
fork:执行后,子进程几乎赋值父进程的全部内容,在执行上,从fork的下一句开始执行。这时候父子进程执行相同的代码,通过pid区分具体执行内容
子进程属于拷贝,只有子进程试图修改父进程集成过来的时间的时候,
2---获取id号
        所需头文件
         #include <sys/types.h>
           #include <unistd.h>

       pid_t getpid(void);//当前进程的PID
       pid_t getppid(void);//当前进程的父PID
3---结束一个进程
所需头文件
 #include <stdlib.h>
 void exit(int status); 
功能:结束一个进程(检查缓冲区,如果有东西就刷新缓冲区)
参数:进程的结束状态,一般0表示正常结束,其他任何值表示异常结束
返回值:无

所需头文件
 #include <unistd.h>
  void _exit(int status); 
功能:结束一个进程(不检查缓冲区,直接结束)
参数:进程的结束状态,一般0表示正常结束,其他任何值表示异常结束
返回值:无


【6】孤儿进程
孤儿进程:当父进程先于子进程退出,那么子进程就成为孤儿进程,此时,子进程被系统1号进程(init)收养。我们说这个进程为孤儿进程。
创建孤儿进程是为了方便进程一直在后台运行达到实时监听的效果(守护进行)
【7】僵尸进程
僵尸进程:子进程先于父进程退出,而父进程没有做处理。父进程没有退出的情况下,僵尸进程仍然占有一定的资源,所以僵尸进程是有一定的危害的,需要处理

  所需头文件
         #include <sys/types.h>
       #include <sys/wait.h>
     pid_t wait(int *status);
功能:等待子进程的退出,接受子进程的退出状态
参数:status :一个整形的指针或者NULL用来保存子进程的退出状态,若为空表示忽略子进程的退出状态
返回值:如果为-1表示出错,正确返回子进程的进程号

     pid_t waitpid(pid_t pid,  int  *sta‐ tus, int options); 
功能:等待子进程退出
 参数:pid =0 等待同一个进程组中任意进程退出
            pid<-1    等待组id等于pid绝对值到的子进程退出
            常用 :
            pid=-1表示任何一个子进程退出
            pid>0:表示等待专属的pid==PID进程的退出
            status:同wait,子进程的退出状态
            options
                            0:死等
                            WUNTRACED:在子进程被暂停时waitpid会返回
                   常用:WNOHANG:非阻塞等待,想要等待的子进程没有退出,那么waitpid也会返回,不会死等

返回值:失败 -1
                如果是WNOHANG子进程没有退出返回0
                如果子进程退出返回子进程的PID
          wait(NULL)==waitpid(-1,NULL,0)
常用
        waitpid(-1,NULL,WNOHANG);


    


判断退出的状态WEXITSTATUS宏命令


【8】exec
exec:函数提供了一种进程中启动另外一个程序的用



        #include <unistd.h>

       extern char **environ;

       int execl(const char *path, const char *arg, ...);
       int execlp(const char *file, const char *arg, ...);
       int execle(const char *path, const char *arg,
                         ..., char * const envp[]); 
       int execv(const char *path, char *const argv[]);
       int execvp(const char *file, char *const argv[]);
       int execvpe(const char *file, char *const argv[],
                  char *const envp[]);




【9】 守护进程
ps -axj
tty 为?为守护进程














  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_27205523

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值