2013年7月6日

UNIX环境高级编程——信号(API)

摘要: 一、信号在内核中的表示 实际执行信号的处理动作称为信号递达(Delivery),信号从产生到递达之间的状态,称为信号未决(Pending)。进程可以选择阻塞(Block)某个信号。被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作。注意,阻塞和忽略是不同的,只要... 阅读全文

posted @ 2013-07-06 21:56 胡永光 阅读(166) 评论(0) 推荐(0) 编辑

UNIX环境高级编程——信号之kill、raise、killpg、alarm、pause、abort、sleep、usleep、nanosleep和setitimer函数

摘要: 一、kill, raise, killpg 函数int kill(pid_t pid, int sig);int raise(int sig);int killpg(int pgrp, int sig);kill命令是调用kill函数实现的,kill函数可以给一个指定的进程或进程组发送指定的信号,... 阅读全文

posted @ 2013-07-06 17:42 胡永光 阅读(316) 评论(0) 推荐(0) 编辑

UNIX环境高级编程——信号基本概述和signal函数

摘要: 一、为了理解信号,先从我们最熟悉的场景说起:1. 用户输入命令,在Shell下启动一个前台进程。2. 用户按下Ctrl-C,这个键盘输入产生一个硬件中断。3. 如果CPU当前正在执行这个进程的代码,则该进程的用户空间代码暂停执行,CPU从用户态切换到内核态处理硬件中断。4. 终端驱动程序将Ctrl... 阅读全文

posted @ 2013-07-06 16:13 胡永光 阅读(163) 评论(0) 推荐(0) 编辑

UNIX环境高级编程——进程关系

摘要: 一、终端的概念在UNIX系统中,用户通过终端登录系统后得到一个Shell进程,这个终端成为Shell进程的控制终端(Controlling Terminal),控制终端是保存在PCB中的信息,而我们知道fork会复制PCB中的信息,因此由Shell进程启动的其它进程的控制终端也是这个终端。默认情况... 阅读全文

posted @ 2013-07-06 15:54 胡永光 阅读(128) 评论(0) 推荐(0) 编辑

UNIX环境高级编程——system函数

摘要: system函数功能:调用fork产生子进程,由子进程来调用;/bin/sh -c command来执行参数command所代表的命令,阻塞当前进程直到command命令执行完毕。int system(const char *command);因为system在其实现中调用了fork、exec和w... 阅读全文

posted @ 2013-07-06 15:19 胡永光 阅读(202) 评论(0) 推荐(0) 编辑

UNIX环境高级编程——进程基本概述

摘要: 一、什么是进程从用户的角度来看进程是程序的一次执行过程。从操作系统的核心来看,进程是操作系统分配的内存、CPU时间片等资源的基本单位。进程是资源分配的最小单位。每一个进程都有自己独立的地址空间与执行状态。像UNIX这样的多任务操作系统能够让许多程序同时运行,每一个运行着的程序就构成了一个进程。二、... 阅读全文

posted @ 2013-07-06 11:35 胡永光 阅读(135) 评论(0) 推荐(0) 编辑

UNIX环境高级编程——进程控制

摘要: 一、进程标识符 ID为0的进程是调度进程,常常被称为交换进程。该进程是内核的一部分,它并不执行任何磁盘上的程序,因此也被称为系统进程。进程ID 1通常是init进程,在自举过程结束时由内核调用。init通常读与系统有关的初始化文件,并将系统引导到一个状态(例如多用户)。init进程决不会终... 阅读全文

posted @ 2013-07-06 11:25 胡永光 阅读(160) 评论(0) 推荐(0) 编辑

UNIX环境高级编程——进程环境

摘要: 一、main函数 C程序总是从main函数开始。当内核执行C程序时,在调用main前先调用一个特殊的启动例程。可执行程序文件将此启动例程指定为程序的起始地址——这是由连接编译器设置的,而连接编译器则由C编译器调用(通常是cc)。启动例程从内核取得命令行参数和环境变量值。然后调用main函数... 阅读全文

posted @ 2013-07-06 09:44 胡永光 阅读(250) 评论(0) 推荐(0) 编辑

导航