概述
进程
1、进程的概念
首先在linux操作系统下,当你触发任何一个事件时,系统都将它定义为一个进程,并且给予这个进程一个ID,即PID。
那么如何产生一个进程呢?简单来说就是“执行一个程序或命令”。
2、进程与程序的区别
程序一般是以物理文件的形式储存在硬盘等存储媒介中。
进程可以看做在内存中正在运行的程序。
3、子进程与父进程
一个进程创建的另一个新进程称为子进程。相反地,创建子进程的进程称为父进程。
对于一个普通的用户进程,它的父进程就是执行它的哪个Shell,对于Linux而言,Shell就是bash。
查询PID和PPID的函数:
PID:pid_t getpid(void);
PPID:pid_t getppid(void);
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
// 获取当前进程的PID
pid_t pid = getpid();
printf("pid = %dn", pid);
// 获取当前进程的PPID
pid_t ppid = getppid();
printf("ppid = %dn", ppid);
return 0;
}
一般采用ps -l的命令来显示进程的PID和PPID。
4、fork和exec(过程调用的流程)
进程相互之间存在着调用,在Linux的过程调用通常称为fork-and-exec流程,首先进程都会通过父进程以复制(fork)的形式产生一个一模一样的子进程,然后复制出来的子进程通过exec的方式来执行实际要进行的进程。
注:这个子进程与父进程唯一的区别就是PID,并且这个子进程多了一个PPID参数。
我们来看下面一段代码:
#include<stdio.h>
int main()
{
printf("I am process!");
return 0;
}
这个程序的结果显而易见,那么我们给代码中加上一句。
#include<stdio.h>
int main()
{
fork();
printf("I am process!");
return 0;
}
结果如下图
下面是fork返回值的内容(通过man fork查询)
最后
以上就是眯眯眼猎豹为你收集整理的进程以及task_struct结构体的全部内容,希望文章能够帮你解决进程以及task_struct结构体所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复