《unix高级环境编程》进程关系——会话
来源:互联网 发布:mac pro 常用软件 编辑:程序博客网 时间:2024/05/18 01:06
会话
会话是一个或多个进程组的集合,通常是由shell的管道线将几个进程编成一组;会话首进程是新建会话时,会话中的唯一进程,其进程ID等于会话ID;
下面是新建会话和获取会话首进程的进程组ID的函数:
/* 会话 *//* * 函数功能:建立一个新会话; * 返回值:若成功则返回进程组ID,若出错则返回-1; * 函数原型: */#include <unistd.h>pid_t setsid(void);/* * 函数功能:获取会话首进程的进程组ID; * 返回值:若成功则返回会话首进程的进程组ID,若出错则返回-1; * 函数原型: */pid_t getsid(pid_t pid);/* * 若pid = 0,则返回调用进程的会话首进程的进程组ID; */
若调用 setsid 函数的进程不是一个进程组组长,则此函数就会创建一个新会话,结果将发生下面三件事:
- 该进程变成新会话首进程(session leader)。(会话首进程是创建该会话的进程)此时,该进程是新会话中的唯一进程。
- 该进程称为一个新进程组的组长进程,新进程组ID是该调用进程的进程ID。
- 该进程没有控制终端,如果在调用setsid之前该进程有一个控制终端,那么这种联系也会被中断。
测试程序:
#include "apue.h"#include <sys/types.h>int main(void){ pid_t pid; if((pid = fork()) < 0) err_sys("fork error"); else if(0 == pid) { setsid(); printf("child process pid is %d\n",getpid()); printf("group id is %d\n",getpgid(0)); printf("My father id is %d\n",getppid()); printf("My session id is %d\n",getsid(0)); } else { printf("parent process pid is %d\n",getpid()); printf("group id is %d\n",getpgid(0)); printf("My father id is %d\n",getppid()); printf("My session id is %d\n",getsid(0)); }}输出结果:
parent process pid is 4854group id is 4854My father id is 2982My session id is 2982child process pid is 4855group id is 4855My father id is 1My session id is 4855
0 0
- 《unix高级环境编程》进程关系——会话
- 《unix高级环境编程》进程关系——会话
- Unix环境高级编程—进程关系
- 《unix高级环境编程》进程关系——进程组
- 《unix高级环境编程》进程关系——进程组
- UNIX环境高级编程——进程关系
- unix环境高级编程-进程关系
- 《UNIX环境高级编程》--9进程关系
- UNIX环境高级编程——进程
- 《unix高级环境编程》进程关系——控制终端、作业控制和守护进程
- 《unix高级环境编程》进程关系——控制终端、作业控制和守护进程
- 《unix高级环境编程》进程关系——控制终端、作业控制和守护进程
- 《unix高级环境编程》进程环境——进程终止
- 《unix高级环境编程》进程环境——进程终止
- UNIX环境高级编程读书笔记(九)—进程关系 (1)
- UNIX环境高级编程读书笔记(九)—进程关系 (2)
- UNIX环境高级编程读书笔记(九)—进程关系 (1)
- UNIX环境高级编程读书笔记(九)—进程关系 (2)
- 程矢Axure夜话:中继器系列视频教程之中继器表格添加数据
- JFreeChart在Struts2中实现3D柱状图统计
- android ListView嵌套的处理方法
- Bitmap too large to be uploaded into a texture
- 程矢Axure夜话:中继器系列视频教程之中继器表格搜索
- 《unix高级环境编程》进程关系——会话
- js中的触屏事件
- 程矢Axure夜话:中继器系列视频教程之中继器表格生成连续序号
- insert /*+ APPEND */
- TinyOs博客资源汇总
- 程矢Axure夜话:中继器系列视频教程之中继器表格设置特定单元格样式
- Android 4.0 Launcher2源码分析——主布局文件
- 我们怎么做需求分析 笔记1
- Linux中getopt函数用法