摘要: 摘自:http://see.xidian.edu.cn/cpp/html/1658.html 从技术上讲有两种C语言标准,一种来自ANSI(American National Standard Institute,美国国家标准协会)X3J11委员会,另一种来自ISO(International Standard Organization,国际标准协会)9899—1990。由于ISO标准中的某些改进优于ANSI标准,而ANSI标准也接受了这个国际版本,因此"ANSI/ISO标准”是一种正确的说法。 阅读全文
posted @ 2013-12-28 17:50 ITtecman 阅读(971) 评论(0) 推荐(0) 编辑
摘要: 本篇博文内容摘自《UNIX环境高级编程》(第二版),仅作个人学习记录所用。关于本书可参考:http://www.apuebook.com/。 长期以来,UNIX系统一直使用两种不同的时间值: (1)日历时间 该值是自1970年1月1日00:00:00以来国际标准时间(UTC)所经过的秒数累计值(早期的手册称UTC为格林尼治标准时间)。这些时间值用于记录文件最近一次的修改时间等。 系统基本数据类型time_t用于保存这种时间值。 (2)进程时间 这也被称为CPU时间,用以度量进程使用的中央处理机资源。进程时间以时钟滴答计算,历史上曾经去每秒钟为50、60或100个滴答。 系统基... 阅读全文
posted @ 2013-12-28 17:12 ITtecman 阅读(1056) 评论(0) 推荐(0) 编辑
摘要: 本篇博文内容摘自《UNIX环境高级编程》(第二版),仅作个人学习记录所用。关于本书可参考:http://www.apuebook.com/。 信号(signal)是通知进程已发生某种情况的一种技术。例如,若某一进程执行除法操作,其除数为0,则将名为SIGFPE(浮点异常)的信号发送给该进程。进程如果处理信号有三种选择: (1)忽略该信号。有些信号表示硬件异常,例如,除以0或访问进程地址空间以外的单元等,因为这些异常产生的后果不确定,所以不推荐使用这种处理方式。 (2)按系统默认方式处理。对于除以0的情况,系统默认方式是终止该进程。 (3)提供一个函数,信号发生时则调用该函数,这被称... 阅读全文
posted @ 2013-12-28 16:45 ITtecman 阅读(358) 评论(0) 推荐(0) 编辑
摘要: 一、用户ID 口令文件(/etc/passwd)登录项中的用户ID(user ID)是个数值,它向系统标识各个不同的用户。系统管理员在确定一个用户的登录名的同时,确定其用户ID。用户不能更改其用户ID。通常每个用户有一个唯一的用户ID。 用户ID为0的用户为根(root)或超级用户(superuser)。在口令文件中,通常有一个登录项,其登录名为root,我们称这种用户的特权为超级用户特权。如果一个进程具有超级用户特权,则大多数文件权限检查都不再进行。某些操作系统功能只限于向超级用户提供,超级用户对系统有自由的支配权。二、组ID 口令文件登录项也包括用户的组ID(group ID),它是... 阅读全文
posted @ 2013-12-28 16:27 ITtecman 阅读(744) 评论(0) 推荐(0) 编辑
摘要: 当UNIX函数出错时,常常会返回一个负值,而且整型变量errno通常被设置为含有附加信息的一个值。例如,open函数如成功执行则返回一个非负文件描述符,如出错则返回-1。在open出错时,有大约15种不同的errno值(文件不存在、权限问题等)。某些函数并不返回负值而是使用另一种约定。例如,返回一个指向对象的指针的大多数函数,在出错时,将返回一个null(或NULL)指针。 文件中定义了符合errno以及可以赋予它的各种常量,这些常量都以字符E开头。另外,UNIX系统手册第2部分的第1页intro(2)列出了所有这些出错常量。在Linux中,出错常量在errno(3)手册页中列出(可以使... 阅读全文
posted @ 2013-12-28 15:53 ITtecman 阅读(894) 评论(0) 推荐(0) 编辑
摘要: 摘自:http://blog.csdn.net/fxjtoday/article/details/6021845 如果想明白为什么需要extern, 需要从编译和链接讨论起, 现代编译器一般采用按文件编译的方式,因此在编译时,各个文件中定义的全局变量是互相透明的,也就是说,在编译时,全局变量的可见域限制在文件内部。但是到了链接阶段,要将各个文件的内容“合为一体”,因此,如果某些文件中定义的全局变量名相同的话,会报错. 因此,各个文件中定义的全局变量名不可相同。//A.cppint i;void main(){}//B.cppint i; 所以上面两个文件编译是没有问题的, 但是到了链接就... 阅读全文
posted @ 2013-12-28 15:16 ITtecman 阅读(750) 评论(0) 推荐(0) 编辑
摘要: 一、程序 程序(program)是存放在磁盘上、处于某个目录中的一个可执行文件。使用6个exec函数中的一个由内核将程序读入存储器,并使其执行。二、进程和进程ID 程序的执行实例被称为进程(process)。某些操作系统使用任务(task)表示正在执行的程序。 UNIX系统确保每个进程都有一个唯一的数字标识符,称为进程ID(process ID)。进程ID总是一个非负整数。 程序清单1-4 打印进程ID[root@localhost unix_env_advance_prog]# cat prog1-4.c#include "apue.h"intmain(void){ p. 阅读全文
posted @ 2013-12-28 11:19 ITtecman 阅读(1129) 评论(4) 推荐(0) 编辑
摘要: 一、文件描述符 文件描述符(file descriptor)通常是一个小的非负整数,内核用它标识一个特定进程正在访问的文件。当内核打开一个已有文件或创建一个新文件时,它返回一个文件描述符。在读、写文件时,就可以使用它。二、标准输入、标准输出和标准出错 按惯例,每当运行一个新程序时,所有的shell都会为其打开三个文件描述符:标准输入(standard input)、标准输出(standard output)以及标准出错(standard error)。如果没有做什么特殊处理(如重定向),则这三个描述符都链向终端。三、不用缓冲的I/O 函数open、read、write、lseek以及cl... 阅读全文
posted @ 2013-12-28 10:18 ITtecman 阅读(606) 评论(0) 推荐(0) 编辑
摘要: 程序清单1-1 列出一个目录中的所有文件(ls命令的简要实现):[root@localhost unix_env_advance_prog]# cat prog1-1.c #include "apue.h"#include int main(int argc, char *argv[]){ DIR *dp; struct dirent *dirp; if(argc != 2) err_quit("Usage: ls directory_name"); if((dp = open... 阅读全文
posted @ 2013-12-28 09:17 ITtecman 阅读(257) 评论(0) 推荐(0) 编辑
摘要: [root@localhost unix_env_advance_prog]# cat error.c #include "apue.h"#include #include static void err_doit(int, int, const char *, va_list);/** Nonfatal error related to a system call.* Print a me... 阅读全文
posted @ 2013-12-28 09:13 ITtecman 阅读(331) 评论(0) 推荐(0) 编辑
摘要: [root@localhost unix_env_advance_prog]# cat apue.h #ifndef _APUE_H#define _APUE_H#define _XOPEN_SOURCE 600#include #include #include #ifndef TIOCGWINSZ#include #endif#include #include #include #inc... 阅读全文
posted @ 2013-12-28 09:11 ITtecman 阅读(922) 评论(0) 推荐(0) 编辑
摘要: 首先,明确一个类型DIR的含义:#include DIR A type representing a directory stream. DIR是在目录项格式头文件dirent.h中定义的,它表示一个目录流类型。一、opendir - open a directorySYNOPSIS #include #include DIR *opendir(const char *name); DESCRIPTIONopendir函数打开一个与给定的目录名name相对应的目录流,并返回一个指向该目录流的指针。打开后,该目录流指向了目录中的第一个目录项。 RETURN VALUEopendir函... 阅读全文
posted @ 2013-12-28 08:40 ITtecman 阅读(17374) 评论(0) 推荐(0) 编辑