进程的概念与exec的用法

一.进程概念

1.进程与程序的差异?
未编译的程序 ----------可执行程序
程序: 一堆待执行的程序 gcc hello.c -o hello (程序是一个静态数据) 剧本

进程: 只有程序被加载到CPU中占用资源时,根据代码每行做出反应,才能形成一个真正动态的进程
(进程是一个动态的过程) 拍戏的过程

2.可执行程序 project --> ./project --> 开启一个进程

以下的几个区域的数据会直接从程序中拷贝到内存中

.init 初始化段
.data和.bss 数据段
.rodata 常量区

3.当程序执行时,除了会分配空间之外,系统还会为你分配一个结构体目录,读取一个目录项时就会返回一个结构体指针,这个结构体用于描述这个目录项 (描述:类型,结构体大小,索引号,偏移量,文件名)

    ./project   开启一个进程  
      -->  返回一个结构体  
      struct task_struct{};

在这里插入图片描述

这个结构体用于描述这个进程 (描述:进程ID号,信号,文件,资源…)这个结构体在哪里?

/usr/src/linux-headers-3.5.0-23/include/linux/sched.h
4. 关于进程的命令

1) 查看整个Linux系统的命令 --> pstree

//所有的进程的祖先进程都是init进程 init─┬─NetworkManager───{NetworkManager}
├─accounts-daemon───{accounts-daemon}
├─acpid
├─atd
├─avahi-daemon───avahi-daemon
├─bluetoothd
├─colord───2*[{colord}]
├─console-kit-dae───64*[{console-kit-dae}]
├─cron
├─cupsd

2) 查看进程PID号 --> ps -ef (静态)
在这里插入图片描述

3)查看进程CPU占用率 --> top (动态)

CPU实时使用率在这里插入图片描述

5. 进程的状态

就绪态 TASK_RUNNING 等待CPU资源
运行态 TASK_RUNNING 占用CPU资源
暂停态 TASK_STOPPED 收到暂停信号
睡眠态
TASK_INTERRUPTIBLE 响应信号 --> 浅度睡眠 pause() --> 直到收到一个信号为止
TASK_UNINTERRUPTIBLE 不响应信号 --> 深度睡眠
僵尸态 EXIT_ZOMBIE 进程退出时,就一定会变成僵尸态,占用CPU资源
死亡态 进程退出时,如果有进程帮自己回收资源,那么就会从僵尸态变成死亡态
在这里插入图片描述

所谓CPU资源: 指的就是 struct task_struct{};

二. 进程函数接口

1.如何创建新的进程? --> fork() --> man 2 fork

NAME
fork - create a child process //在一个进程创建子进程,父子进程就会一起执行

//头文件
#include <unistd.h>

//函数原型
pid_t fork(void); --> 不需要传递任何参数

//返回值:  pid_t  进程ID号类型

成功: 父进程返回子进程PID号 子进程返回0 失败: -1

====================================================
#include <stdio.h>
#include <unistd.h>

int main()
{
   
	//1.程序开始执行时,只有一个进程
	printf("hello!\n");
	
	//2.产生一个子进程
	fork();
	
	//3.父子进程同时执行这条代码,至于谁先谁后
	printf("world!\n");
	
	return 0;
}
============================
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值