什么是程序,什么是进程,有什么区别?
程序是静态的概念,gcc xxx.c - o pro
磁盘中生成的pro文件,叫做程序
进程是程序的一次运行活动,通俗点意思是程序跑起来了,系统中就多了一个进程
如何查看系统中有那些进程?
a.使用ps指令查看
实际工作中,配合grep来查看程序中是否存在某一进程:grep:起到过滤作用
例如
tianya@tianya-virtual-machine:~$ ps
PID TTY TIME CMD
5253 pts/0 00:00:00 bash
5310 pts/0 00:00:00 ps
tianya@tianya-virtual-machine:~$ ps -aux|grep init
root 1 0.0 0.2 225392 5544 ? Rs 09:25 0:01 /sbin/init splash
tianya 5405 0.0 0.0 16180 1104 pts/0 S+ 10:01 0:00 grep --color=auto init
tianya@tianya-virtual-machine:~$
b.使用top指令查看,类似windows任务管理器
tianya@tianya-virtual-machine:~$ top
什么是进程标识符?
每个进程都有一个非负整数表示唯一ID,叫做pid,类似身份证
pid=0:称为交换进程(swapper)
作用——进程调度
pid=1:init进程
作用——系统初始化
编程调用getpid函数获得自身的进程标识符,getppid获取父进程的进程标识符
输入命令可以查看函数用法
tianya@tianya-virtual-machine:~$ man getpid
NAME
getpid, getppid - get process identification
SYNOPSIS
#include <sys/types.h>
#include <unistd.h>
pid_t getpid(void);
pid_t getppid(void);
测试demo
#include<stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
pid_t pid;
pid = getpid();
printf("my pid:%d\n",pid);
while(1);//让程序不退出
return 0;
}
测试结果:编译运行,使用top指令查看进程
什么叫父进程,什么叫子进程
进程A创建了进程B
那么A叫做父进程,B叫做子进程,父子进程是相对概念,理解为人类中的父子关系