Linux--进程

  • 进程相关概念
  1. 什么是程序,什么是进程,有什么区别?

程序是静态的概念,如 gcc XXX.c -o pro,磁盘中生成pro文件 叫做程序。

进程是程序的一次运行活动,通俗点意思是程序跑起来了,系统中就多了一个进程。

  1. 如何查看系统中有哪些进程
  1. 使用ps指令查看

实际工作中,配合grep来查找程序中是否存在某一个进程。

  1. 使用top指令查看,类似windows任务管理器。

  1. 什么是进程标识符

每个进程都有一个非负整数表示的唯一ID,叫做pid,类似身份证。

pid=0:称为交换进程(swapper)  作用——进程调度

pid=1:init进程  作用——系统初始化

编程调用getpid函数获取自身的进程标识符,

getppid获取父进程的进程标识符。

  1. 什么叫父进程,什么叫子进程

进程A创建了进程B,那么A叫做父进程,B叫做子进程,父子进程是相对概念,理解为人类中的父子关系。

  1. C程序的存储空间是如何分配

  • 进程函数fork的使用

1.fork函数

pid_t fork(void);

fork函数调用成功,返回两次

返回值为 0  ,代表当前进程是子进程;

返回值非负数,代表当前进程为父进程。

       调用失败,返回-1。

2.vfork函数

两者的区别:

       关键区别一:vfork直接使用父进程存储空间,不拷贝。

       关键区别二:vfork保证子进程先运行,当子进程调用exit退出后,父进程才执行。

  • 进程退出

正常退出

  1. main函数调用return
  2. 进程调用exit(),标准C库
  3. 进程调用_exit()或者_Exit(),属于系统调用

补充:

  1. 进程最后一个线程返回
  2. 最后一个线程调用pthread_exit

异常退出

  1. 调用abort
  2. 当进程收到某些信号时,如ctrl+C
  3. 最后一个线程对取消(cancellation)请求作出响应

  • 父进程等待子进程

wait(int *status)

status参数:是一个整型数指针

非空:子进程退出状态放在他是所指向的地址中

空:不关心退出状态

  • exec族函数
  1. exec族函数的作用

我们用fork函数创建新进程后,经常会在新进程中调用exec函数去执行另一个程序。当进程盗用exec函数时,该进程被完全替换为新程序。因为调用exec函数并不创建新进程,所以前后进程的ID并没有改变。

  1. 函数族:execl,execlp,execle,execv,execvp,execvpe
  2. Exec族函数参数极难记忆和分辨,函数名中的字符会给我们一些帮助:

L:使用参数列表

P:使用文件名,并从path环境进行寻找可执行文件

V:应先构造一个指向参数的指针数组,然后将该数组的地址作为这些函数的参数

E:多了envp[ ]数组,使用新的环境变量代替调用进程的环境变量

  • perror 用于查找错误点
  • export 修改环境变量

export PATH=$PATH:执行文件的路径

  • SYSTEM函数
  1. system函数的返回值如下:

成功,则返回进程的状态值;当sh不能执行时,返回127;失败返回-1;

  • popen函数

popen比system的好处是可以获取运行的输出结构

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值