编程级别:
(一)守护进程的概念
守护进程是一种生存期比较长的进程,常常在系统自举时启动,在系统关闭时退出。因为他们没有控制终端,因此是在后台运行的。
(二)守护进程的编程规则
1 清除文件模式创建屏蔽字
2 成为一个新的会话首进程
3 略HUP信号。然后再次fork
4 改变当前工作路径
5 关闭所有的文件描述符
6 把文件描述符0 1 2都定向到 /dev/null
7 日...
分类:
系统相关 时间:
2015-08-04 11:19:18
阅读次数:
170
进程调度的任务
保存处理机信息
按某种算法选取进程
把处理器分配给进程
进程调度机制
排队器。把就绪进程排成一个或者几个队列
分派器。把进程从就绪队列中取出来,然后把处理机给他
上下文切换器。保存上一个进程的信息,分配下一个进程的信息
进程调度的方式
非抢占式
抢占式
进程调度算法轮转调度算法把就绪进程排成一个队列,把CPU分配给队首进程,执行一定的时间,运行完毕就分配给另一个新的队首进程,每隔一定...
分类:
编程语言 时间:
2015-05-24 20:28:18
阅读次数:
203
SIGHUP会在以下3种情况下被发送给相应的进程:1、终端关闭时,该信号被发送到session首进程以及作为job提交的进程(即用 & 符号提交的进程)2、session首进程退出时,该信号被发送到该session中的前台进程组中的每一个进程3、若组长进程退出导致进程组成为孤儿进程组,且该进程组中有...
分类:
其他好文 时间:
2015-05-18 20:38:35
阅读次数:
146
问题1:为什么ssh一关闭,程序就不再运行了
元凶:SIGHUP 信号让我们来看看为什么关掉窗口/断开连接会使得正在运行的程序死掉。
在Linux/Unix中,有这样几个概念:
进程组(process group):一个或多个进程的集合,每一个进程组有唯一一个进程组ID,即进程组长进程的ID。
会话期(session):一个或多个进程组的集合,有唯一一个会话期首进程(session lead...
分类:
其他好文 时间:
2015-03-15 23:05:15
阅读次数:
189
问题描述: 每次SSH到服务器上,然后运行了一个自己写的服务端程序,比如 ./myserver.sh ,然后关闭ssh或者终端之后,发现服务不能访问。简要分析下: 根据 这篇博文 的提示,ssh登录后会新建一个会话,一个登陆shell发起的会话,一般由一个会话首进程、一个前台进程组、一个后台进...
分类:
系统相关 时间:
2015-03-01 18:16:40
阅读次数:
217
大体步骤如下
1. 调用fork()函数创建子进程后,让父进程立即exit(),这样产生的子进程变成孤儿进程,由init进程接管。
2. 调用setsid()函数,使得新创建的进程脱离控制终端,同时创建新的进程组,并成为该进程组的首进程。在linux系统中,所有的进程都属于各自的进程组,进程组是一个或多个进程的集合,一个进程组中至少有一个进程成员,否则就消亡了。每个进程组都有一个进...
分类:
其他好文 时间:
2014-09-04 10:34:39
阅读次数:
1161
当我们使用securecrt,putty, 等连接远程服务器时,如果正在执行一个程序,比如shell 脚本,退出当前的窗口会导致程序终止!其原理如下:根据POSIX.1定义:1 挂断信号(SIGHUP)默认的动作是终止程序。2 当终端接口检测到网络连接断开,将挂断信号发送给控制进程(会话期首进程)。...
分类:
其他好文 时间:
2014-08-13 21:38:17
阅读次数:
227