摘要: 第七章 进程环境1、main函数:int main(int argc, char *argv[])2、进程中止:正常中止:(1)从main返回;(2)调用exit;(3)调用_exit或_Exit;(4)最后一个线程从启动例程返回;(5)最后一个线程调用pthread_exit; 异常中止:(6)调用abort;(7)接到一个信号并中止;(8)最后一个线程对取消请求做出反应。2.1、exit函数:#include<stdlib.h>void exit(int status);void _Exit(int status);#include<unistd.h>void _e 阅读全文
posted @ 2011-08-03 20:31 name_110 阅读(552) 评论(0) 推荐(0) 编辑
摘要: 第六章 系统数据文件和信息1、口令文件:一般包含用户名,加密口令,数值用户id,数值组id,注释字段,初始工作目录,初始shell,用户访问类,下次更改口令时间,帐号到期时间 注:这些字段包括在<pwd.h>中定义的passwd结构中。口令文件一般存储在/etc/passwd中:如:root:x:0:0:root:/root:/bin/bash cao:x:1000:1000:Cao,,,:/home/cao:/bin/bash 当shell字段的值为/dev/null时表示阻止任何人以该用户的名义登录系统。 使用finger命令能够查看用户有关信息:cao@cao-Rev-1-0 阅读全文
posted @ 2011-08-03 20:30 name_110 阅读(649) 评论(0) 推荐(0) 编辑
摘要: 第五章 标准IO库1、流和FILE对象:有两个函数可以改变流的定向:freopen函数可以清除一个流的定向;fwide函数可以设置流的定向#include<stdio.h>#include<wchar.h> int fwide(FILE *fp, int mode); //若流是宽定向的则返回正值,若流是字节定向的则返回值负值,未定向返回0若mode为负,字节定向;mode为正,宽定向;mode为0,不定向。 fwide并不改变已定向流的定向,无出错返回。当打开一个流时,标准IO函数fopen返回一个指向FILE对象的指针,该对象是一个结构,包含了标准IO库为管理该流所 阅读全文
posted @ 2011-07-31 20:34 name_110 阅读(570) 评论(0) 推荐(0) 编辑
摘要: 第四章 文件和目录本章将描述文件系统特征和文件性质1、stat、fstat和lstat函数原型:#include<sys/stat.h>int stat(const char* restrict pathname, struct stat *restrict buf);int fstat(int filedes, struct stat *buf);int lstat(const char* restrict pathname, struct stat *restrict buf); 若成功返回0,出错返回-1注:lstat与stat的不同,当命名文件是一个符号链接时,lstat返 阅读全文
posted @ 2011-07-30 13:54 name_110 阅读(701) 评论(0) 推荐(0) 编辑
摘要: 第二章 文件I/O1、文件描述符 对于内核而言,所有打开的文件都通过文件描述符引用,文件描述符是一个非负整数。 Unix shell使用文件描述符0表示标准输入,1表示标准输出,2表示标准出错输出,为了避免在代码中出现魔数,在<unixtd.h>头文件中,1,2,3替换为符号常量STDIN_FILENO,STDOUT_FILENO,STDERR_FILENO,文件描述符的变化范围是0~OPEN_MAX。2、open函数原型:#include<fcntl.h> int open(const char *pathname, int oflag, ...) /*仅当创建新文件 阅读全文
posted @ 2011-07-30 13:52 name_110 阅读(1609) 评论(0) 推荐(0) 编辑
摘要: 1、Linux进程间通信方法:信号、管道与命名管道、消息队列共享主存、信号量、套接字3、信号通信3.1、在Linux环境下,可通过运行“kill -l”命令获得Linux支持的信号列表3.2、信号生命周期:信号诞生、信号在进程中注册、信号在进程中注销、信号处理函数执行完毕3.3、信号处理函数 a)、信号安装函数:#clude<signal.h>,主要有signal()和sigaction()函数 b)、信号发送函数:最常用的5个发送信号的函数是:kill(),raise(),alarm(),settimer(),pause(),需包含头文件<signal.h>和< 阅读全文
posted @ 2011-07-19 17:23 name_110 阅读(348) 评论(0) 推荐(0) 编辑
摘要: 1、实验一:信号通信说明:利用信号通信在父子进程及兄弟进程之间进行通信解决方案:让子进程在结束时,向父进程发送SIGCHLD信号,父进程通过signal()或sigaction()函数来响应子进程的结束。(在一个进程终止或者停止时,将SIGCHLD信号发送给其父进程。)源码1(阻塞型通信):#include<stdio.h>#include<signal.h>#include<wait.h>void sigchld_handler(int sig){ pid_t pid; int status; for(; (pid = waitpid(-1, &s 阅读全文
posted @ 2011-07-19 17:23 name_110 阅读(557) 评论(0) 推荐(0) 编辑
摘要: 实例学习进程线程编程上一篇博客感觉上就像一篇流水帐,就连本人都不知道自己在写些什么,所以,这篇博客将用三个实例说明linux进程和线程编程。1、实验一:创建进程说明:由父进程创建子进程,让子进程读取一个文件,父进程等待子进程读完文件后继续执行解决方案:用waitpid()函数协调两个进程。源码:#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<sys/wait.h>#include<sys/types.h>void rawF(char *fileName){ F 阅读全文
posted @ 2011-07-18 16:58 name_110 阅读(876) 评论(0) 推荐(0) 编辑
摘要: 1、进程与线程的概念:略2、Linux进程结构 Linux使用一个称为进程控制块的数据结构task_struct来代表一个进程(注:task_struct在include\Linux\sched.h文件中定义),主要成员包括:1.进程状态(volatile long state):进程有可运行状态(0),不可运行状态(-1),暂停状态(>0)2.运行标志(unsigned long flags):描述进程管理信息或过度状态,可取值:a.#define PF_STARTING 0x00000002 /*进程被创建*/ b.#define PF_EXITING 0x00000004 /*进程 阅读全文
posted @ 2011-07-18 16:52 name_110 阅读(551) 评论(0) 推荐(0) 编辑
摘要: C++标准库学习之Maps #include<map>C++ Maps是一种关联式容器,包含“关键字/值”对1、插入一个元素:insert()函数: 1)、插入val到pos的后面,然后返回一个指向这个元素的迭代器:iterator insert( iterator pos, const pair<KEY_TYPE,VALUE_TYPE> &val );2)、插入start到end的元素到map中:void insert( input_iterator start, input_iterator end );3)、只有在val不存在时插入val。返回值是一个指向 阅读全文
posted @ 2011-07-18 09:35 name_110 阅读(457) 评论(0) 推荐(0) 编辑