进程:
什么是进程:分配资源(栈、进程ID、)最小的单位,装载程序运行载体
进程结束函数:
return;(main()中最后一个return)
返回调用函数
void exit(int status)
使调用进程结束
void _exit(int status)
使调用进程结束
int atexit(void (*function)(void))
注册进程结束函数。以栈的方式注册并执行。
创建进程函数:
pid_t fork(void)
父进程创建一个子进程,并父进程将代码区内容复制给子进程,父进程将数据区内容复制给子进程。
pid_t vfork(void)
int clone(int (*fn)(void *),
void *child_stack,
int flags,
void *arg, ...
/* pid_t *ptid, struct user_desc *tls, pid_t *ctid */ );
创建进程
exec族
进程状态:
运行
孤儿进程:子进程运行,而其父进程消亡。系统将孤儿的父进程设置为init进程(1)
僵尸进程:子进程消亡但其父进程运行并未对其收尸。父进程消亡时会对其所有子进程收尸。
pid_t wait(int *status)
其任何一个子进程结束时
收尸函数 阻塞函数-------------------------》运行
status:
返回值:收尸进程ID
char *strsep(char **stringp, const char *delim)
进程组:多个进程集合
进程组中组长进程拥有终端使用权,如果进程组中组长进程消亡将释放终端使用权
pid_t getpgrp(void)
获取调用进程所在进程组ID
int setpgid(pid_t pid, pid_t pgid)
int setpgrp(void) 同setpgid(0,0);
会话:多个进程组的集合
pid_t getsid(pid_t pid)
pid_t setsid(void)
创建新的会话并在该会话中创建一个新的进程组并将调用进程设置为该进程组的组长进程,但不能在进程组组长进程中创建新的会话。
守护进程:后台运行,并周期性完成指定任务或等待某个事件发生。
int daemon(int nochdir, int noclose)
创建守护进程
nochdir:工作目录 "/"
noclose: 0 1 2-》/dev/null
阅读(1443) | 评论(0) | 转发(0) |