Linux下进程相关函数接口

创建进程

pid_t fork(void);
功能: 创建一个子进程。
参数: 无。
返回值:
	成功:在父进程空间返回子进程的PID,在子进程空间返回0; 失败: -1,没有子进程被创建。

结束进程

void exit(int status);
功能: 结束当前进程。
返回值:无,一旦调用永不返回。
参数:	
	int status, 用户期望带回的状态值,一般表示任务是否成功。

void _exit(int status) 同exit, 区别是_exit函数立即结束进程,不清理缓存。

获取进程状态/等待进程

pid_t wait(int *status);
功能:阻塞地等待一个进程结束,并获得其状态值。
返回值: 成功,返回结束的子进程ID; 失败, -1;
参数:
	int *status, 进程状态的接收缓冲区。

waitpid(pid_t pid, int *status, int option);
功能: 等待子进程结束,并获得状态值。
返回值:失败,-1; 指定WNOHANG并且没有进程结束, 0; 成功, 结束的进程的ID。
参数:
	1. pid_t pid, 指定等待的子进程。
	2. int *status, 进程状态的接收缓冲区。
	3. int option, 标志位选项,例如WNOHANG表示非阻塞方式获取子进程状态。

执行新程序

execlp
execvp
execl
execv

守护进程(精灵进程)

通常是一个后台进程,它可以脱离终端的控制,不受终端影响,从而在后台执行特殊任务。
	
创建守护进程的步骤:
	1. 创建子进程,并且父进程结束。(保证新的子进程不是进程组组长,因为如果进程已经是某个进程组组长,将不能成功调用setsid)
	2. 子进程调用setsid(), 创建新的会话组并使自己成为新的会话组长。
	3. 关闭所有的文件描述符。(因为进程在创建过程中继承了来自于父进程的大量资源,为了保证新进程不受其影响,尽量释放这些不用的资源)
	4. 重设文件权限掩码。(为了保证新的守护进程可以不受限制地新建任何权限的文件)
	5. 更改工作路径到根。(当前进程占用工作路径会导致当前磁盘分区无法卸载)

最终权限 = 期望权限 &~掩码)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值