接口
- 头文件 #include<stdarg.h>
- int vsnprintf(char* str,size_t size, const char* format, va_list ap);
- 功能 把可变参数列表内容输入到特定缓冲区中
- 参数
- 返回值
- int vprintf(const char* format, va_list ap);
- 功能 把可变参数列表内容直接打到显示器上
- 参数 ap 定义一个va_list类型变量 让其指向可变参数部分
- 返回值
- #include<unistd.h>
- pid_t stdsid(void)
- 功能 将调用该函数的进程设置一个新的会话 会话中进程组长的ID即返回值 也是调用进程的pid 注意 调用该函数的进程不能为进程组组长
- 返回值 成功返回调用进程的PID 即新会话的ID 失败返回-1 错误码被设置
- int daemon(int nochdir,int noclose)
- 功能 以守护进程的方式运行
一些概念
- PGID 进程组
- SID 会话
- TTY 终端
如果TTY显示为? 表示进程与终端没有确切的关系 - 守护进程
- 忽略异常信号
- 对fd0 1 2做特殊处理
- 进程的工作路径可能要更改
一些命令(用于控制进程组 即完成某个任务的一些进程的组合)
- jobs 查看当前会话所有的后台进程组
- fg 任务号 将指定的后台进程组提到前台来
- bg 任务号 使指定的后台程序恢复运行
- crtl+Z 使某个任务再回到后台 此时该任务是暂停状态的 需要命令 bg 任务号 使其恢复运行
如果后台任务提到前台 老的前台任务无法运行 即会话中只能有一个前台任务运行