系统编程--进程函数

2020-08-10  本文已影响0人  魔芋辣椒

一、fork()

#unistd.h
pid_t fork();

拷贝父进程,子进程的fork不执行,返回0,执行fork之后的所有代码
父进程的fork返回子进程pid

二、getpid()

getpid()
#获得当前进程的pid
getppid();
#获得当前进程的父进程的pid

父子进程无论谁,对源代码都是读时共享,写时复制

三、wait()

#include<sys/wait.h>

int status;
pid_t wpid=wait(&status);//回收子进程,并获取回收状态于status

查看status
WIFEXITED 查看子进程是否正常退出,如果为真,调用
WEXITSTATUS //查看子进程正常推出的返回值

WIFSIGNALED 查看子进程是否异常退出,如果为真,调用
WTERMSIG //查看杀死子进程的编号

四、waitpid()

pid_t waitpid(pid_t pid,int *status,int option);
//pid=-1,回收任意子进程,相当于wait
//pid=0,回收所有子进程
//加强版wait,可以选择干掉特定的子进程,option用来指定非阻塞WNOHANG

五、守护进程

不受用户终端控制,循环做某件事的进程,创建时不能由组长创建
创建步骤:

  1. fork子进程,关闭父进程
  2. 子进程调用setsid() 创建会话 (脱离终端)
  3. chdir(),改变目录,防止被卸载
  4. 设置umask,022--755
  5. 关闭/重定向(dup2)文件描述符到dev/null
  6. 编写业务逻辑
上一篇 下一篇

猜你喜欢

热点阅读