Linux 进程(Process,PID,PPID,fork,Daemon)


程序(program) 是一个普通文件,是为了完成特定任务而准备好的 指令序列数据 的集合,这些指令和数据以 可执行映像 的格式保存在磁盘中。

进程(process) 是一个已经 开始执行还没终止程序实例

程序 是个 静态 的文件,进程 是一个 动态 的实体。

1、进程 ID(PID)

每个进程在创建时,内核都会为之分配一个进程IDProcess ID,简称PID)用来标识当前的进程,进程ID是一个类型为pid_t整数,并保持同一时刻是唯一值,它最大值为pid_max值(默认为32768,可修改)。当进程退出时,它的进程ID可回收循环使用。

Linux 系统getpid()函数可以获取当前进程进程ID

2、父进程 与 子进程

进程创建时,创建进程的是 新进程的父进程Parent Process),新进程是创建进程的子进程Child Process)。

子进程中可以使用getppid()函数获取父进程PID

3、创建进程 fork()

fork()函数从运行着进程中分裂出一个子进程,它通过拷贝父进程的方式创建子进程子进程父进程有相同的代码空间文件描述符等资源。
在这里插入图片描述
进程创建后,子进程父进程开始并发执行,执行顺序由内核调度算法来决定。
daemon()函数的原型如下:

#include <unistd.h>
pid_t fork(void);

fork()函数:
(1)成功创建了进程,对父进程返回子进程的PID,对子进程返回0。(fork()函数被调用一次,但返回两次)
(2)失败则返回-1

4、终止进程(exit()

进程终止可分为正常终止异常终止两大类:

序号终止方式具体方法
1正常终止(1)从main()函数return返回;
(2)调用 类exit()函数。
2异常终止(1)调用abort()函数;
(2)接收到一个SIGABRT信号终止。

5、守护进程(Daemon)

守护进程Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务等待处理某些发生的事件,它不需要用户输入就能运行并提供某种服务。

守护进程父进程init进程,因为它真正的父进程fork出该子进程后就先于该子进程exit退出了,所以它是一个由init领养孤儿进程

Linux 系统的大多数服务器就是通过守护进程实现的,且通常以字母d结尾来命名进程名,比如sshdxinetdcrond等。

Linux 系统有多种创建守护进程的方法,其中最常用的是使用daemon()函数来创建守护进程daemon()函数的原型如下:

#include <unistd.h>
int daemon(int nochdir , int noclose);
序号参数描述
1int nochdir如果传入0,则daemon函数将调用进程的工作目录设置为根目录,否则保持原有的工作目录不变
2int noclose如果传入0,则daemon函数会将标准输入标准输出标准错误重定向到/dev/null文件中,否则不改变这些文件描述符

该函数如果成功则返回0,否则返回-1,并设置errno

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值