Linux进程:父子进程

 


提示:以下是本篇文章正文内容,下面案例可供参考

一、什么是程序还有进程,之间的区别?

程序是静态的概念,例如gcc xxx.c -o pro,磁盘生成的pro文件可以理解为程序,当pro运行起来系统就有了一个进程,区别是动态与静态之间的区别,进程就是程序跑起来的概念

二、如何让查看系统中的进程

Linux下有个指令为ps指令

显示进程的指令为:ps -aux,还有top指令类似于window的任务管理器

查找某个特定的进程可以通过命令grep配合ps指令来过滤多余的进程

显示特定的以进程指令为:ps -aux|grep xxx.   xxx为某进程带有的特定关键词

三、什么是进程标识符

每个进程有一个非负整数表示自己的唯一ID,叫pid

pid = 0;是交换进程。作用:进程调度

pid = 1;init进程。作用进程初始化,相当于开机启动运行的第一个程序

getpid()可以获取程序自身的pid号

getppid()可以获取父进程的pid号


四、fork之后父子进程之间的变化

进程A创建了进程B,A就是父进程,B是子进程

fork()进程会调用会返回两次,返回为0表示当前进程为子进程,非负为父进程,返回失败返回值为-1,通过下列代码观察fork之后程序的变化

#include <sys/types.h>
#include <unistd.h>
#include<stdio.h>
int main()
{

        pid_t pid;
        pid_t pid2;
        pid = getpid();//记录最开始的进程标识符PID
        printf("before fork is %d\n",pid);//将最开始的原本的pid打印

        fork();//创建进程,此时程序有两个进程在往下运行,下面的内容将会被两个进程分别调用

        pid2 = getpid();//两个进程分别获取自己的pid号
        printf("before fork is %d\n",pid);

        if(pid == pid2){//判断当前的进程为父进程
                printf("this is father print\n");
        }
        else{//否则是子进程
                printf("this is child print pid=%d\n",getpid());
        }
        return 0;
}
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                  

运行结果:

先运行的进程为父进程,后运行的进程为子进程

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值