08 2012 档案

摘要:Unix中每一个信号对应一个信号编号,该编号写在文件<signal.h>中。Unix共有五种方式可以产生信号:由终端发送信号至前台进程组。出现硬件异常,产生异常信号出现软件异常,产生异常信号由kill命令发送相应信号至指定进程当前进程调用kill函数发送指定信号至指定进程 对信号的处理过程分为三种情况忽略该信号捕获信号,并执行相应信号处理程序由系统执行默认信号处理操作需注意的是,SIGSTOP和SIGKILL信号是不可以忽略或捕获的。 使用signal或sigaction函数可以为信号指定其信号处理函数。函数原型如下#include <signal.h>void (*s 阅读全文
posted @ 2012-08-25 15:57 o0慢节奏0o 阅读(1100) 评论(1) 推荐(0)
摘要:终端登录 在用户使用终端登录Unix操作系统过程中,操作系统首先进行自引导,由内核创建初始化进程(进程ID为1),初始化进程使操作系统进入多用户状态。初始化进程读取/etc/tty文件中的内容,为每一个终端设备新建一个子进程,并执行getty程序。getty程序为当前终端打开文件描述符0、1、2至终端设备,并初始化环境变量列表,执行login程序,等待用户登录。如图1所示。图1. 终端登录调用login后状态 用户登录成功后,login程序根据所登录的用户对进程环境变量做出调整。login程序调用setgid及setuid系统函数,运行login shell,加载引导文件(.prof... 阅读全文
posted @ 2012-08-16 16:36 o0慢节奏0o 阅读(753) 评论(0) 推荐(0)
摘要:Unix中解释程序文件第一行格式为#! pahtname [ optional-argument]pathname为解释程序的绝对路径,optional-arugment为解释程序参数。例如,shell脚本第一行大多为#! /bin/sh当使用exec函数执行解释程序文件时,内核识别出该文件为解释程序文件,并将文件内容以命令的方式传递给解释程序。例如下面代码:#include "apue.h"#include <sys/wait.h>int main(void){ pid_t pid; if ((pid = fork()) < 0) { err_sys(& 阅读全文
posted @ 2012-08-10 17:46 o0慢节奏0o 阅读(174) 评论(0) 推荐(0)
摘要:wait函数和waitpid函数用于捕获子进程停止信号,获取子进程停止状态,并在子进程结束后清除该进程所占用的系统资源。其函数原型为#include <sys/wait.h>pid_t wait(int *statloc); //返回已结束子进程id或-1pid_t waitpid(pid_t pid, int *statloc, int options); //返回已结束子进程id、0或-1 wait函数监听所有子进程,当存在任一子进程停止时,wait函数立即返回。waitpid函数监听子进程受pid参数限制,当pid>0时,pid值为... 阅读全文
posted @ 2012-08-10 17:19 o0慢节奏0o 阅读(746) 评论(0) 推荐(0)
摘要:在Unix操作系统中,每一个进程都具有自己唯一的进程标识号(ID)。大多数Unix操作系统会对进程ID进行重用延迟,当进程结束时,调度程序并不会立即将该进程ID重分配给下一个进程,以免正在运行的进程利用旧ID错误调用新建进程。其中ID为0表示调度进程(swapper),负责进程之间的调度关系。用户进程无法与调度进程直接通信,调度进程由内核直接控制。ID为1表示初始化进程(init process),初始化进程在内核引导流程结束时被调用,用于初始化系统环境。初始化文件是/erc/rc*文件、/etc/inittab文件及/etc/init.d目录下的文件。初始化进程从不退出。getpid系列.. 阅读全文
posted @ 2012-08-07 15:09 o0慢节奏0o 阅读(1927) 评论(0) 推荐(0)