UNIX环境高级编程
NS西北风
为梦想而坚持。
展开
-
<sys/stat.h>的含义!
stat.h头文件,轻松获取文件属性以前还为了获取文件的长度,费劲从头读取一遍,一个一个字节的算。做webserver时候,发现原来stat函数可以返回一个结构,里面包括文件的全部属性。真是曲折啊。】#i ncludestat.h>int stat(const char *restrict pathname,struct stat *restrict buf);转载 2013-12-28 15:18:20 · 1386 阅读 · 0 评论 -
AUPE学习第十二章------线程控制
本章讨论同一进程中的多个线程之间如何保持数据的私有性,最后讨论基于进程的系统调用如何与线程进行交互。可以通过sysconfig函数来得到系统中的限制,包括线程限制。这些限制是为了增强应用程序在不同的操作系统实现之间的可移植性。12.3线程属性线程属性的数据类型是pthread_attr_t结构的指针。可以用下面的方法初始化和去除线程的属性:#include int pt原创 2014-02-21 17:28:10 · 1230 阅读 · 0 评论 -
AUPE学习第十一章------线程
一个进程中的所有线程都可以访问该进程的组成部件。用同步机制防止多个线程查看到不一致的共享资源。11.2线程概念线程包含了表示进程内执行环境必须的信息,其中包括进程中标识线程的线程ID、一组寄存器、栈、调度优先级和策略、信号屏蔽字、errno变量以及线程的私有数据。进程的所有信息对该进程的所有线程都是共享的。线程ID的数据类型是pthread_t数据类型,可以用下面的函数比较两个原创 2014-02-20 23:45:23 · 1273 阅读 · 0 评论 -
AUPE学习第十章------信号
信号时软件中断,基本上所有应用程序都处理信号,信号是处理异步事件的方法。10.2信号概念每个信号都有一个名字,以SIG开头,在头文件中,信号被定义为正整数。编号为0的信号称为空信号。对信号的处理方式:忽略此信号、捕捉此信号、执行系统默认动作。一些信号详细说明:SIGABRT 调用abort函数产生此信号,进程异常终止。SIGCHLD 在一个信号终止或者停止时原创 2014-02-20 09:18:02 · 1582 阅读 · 1 评论 -
AUPE学习第三章------文件I/O2
从这里开始。用的是APUE第三版。从第三版65页开始:原创 2013-12-27 19:33:08 · 1263 阅读 · 0 评论 -
AUPE学习第三章------文件I/O1
3.6lseek函数lseek函数用于当打开一个文件时与其关联的”当前文件偏移量“的操作相关。函数格式:off_t lseek(int fileds, off_t offset, int whence);若成功则返回新的文件偏移,若出错则返回-1.。对参数offset的解释与参数whence的值相关。whence==SEEK_SET原创 2013-12-26 19:56:32 · 1474 阅读 · 1 评论 -
AUPE学习第三章------文件I/O
3.1引言本章开始讨论U N I X系统,先说明可用的文件I / O函数——打开文件、读文件、写文件等等。大多数U N I X文件I / O只需用到5个函数:o p e n、r e a d、w r i t e、lseek 以及c l o s e。然后说明不同缓存器长度对r e a d和w r i t e函数的影响。本章所说明的函数经常被称之为不带缓存的I / O(u n b u f原创 2013-12-26 14:29:27 · 1234 阅读 · 0 评论 -
AUPE学习第二章------UNIX标准化及实现1
下面的这些程序打印一些限制,并处理一个限制未被定义的情况。打印所有可能的sysconfi和pathconfig值。syspathconf.c:#include #include "ourhdr.h"#include "error.c"static void pr_sysconf(char *, int);static void原创 2013-12-26 12:44:22 · 1778 阅读 · 0 评论 -
AUPE学习第二章------UNIX标准化及实现
U N I X和C程序设计语言的标准化工作已经做了很多。虽然U N I X应用程序在不同的U N I X版本之间进行移植相当容易,但是8 0年代U N I X版本的剧增以及它们之间差别的扩大导致很多大用户(例如美国政府)要求对其进行标准化。ANSI C标准的意图是提供C程序的可移植性,使其能适合于大量不同的操作系统,而不只是UN I X。此标准不仅定义了C程序设计语言的语法和语义,原创 2013-12-25 17:27:42 · 1483 阅读 · 0 评论 -
AUPE学习第一章------UNIX基础知识1
1.5程序和进程1.5.1程序程序是存放在磁盘文件中的可执行文件。1.5.2进程和进程ID程序的执行实例称为进程,每个UNIX进程都有一个唯一的指定的数字标示符,称为进程ID,进程ID总是一个飞负整数。下面进程打印进程ID:processid.c代码如下:#include "ourhdr.h"int main(void){ printf("hello wor原创 2013-12-24 22:32:08 · 2750 阅读 · 0 评论 -
AUPE学习第一章------UNIX基础知识
运行myls.c可以显示出参数给出的目录,需要手动导入ourhdr.h,ourhdr.c,error.c这三个文件。下面为这几个文件的内容:myls.c如下:#include #include #include "ourhdr.h"#include "error.c"int main(int argc,char *argv[]){ DIR *dp; struct原创 2013-12-24 21:08:51 · 1763 阅读 · 0 评论 -
实际用户ID,有效用户ID及设置用户ID
http://blog.csdn.net/guosha/article/details/2679334【转】实际用户ID,有效用户ID和设置用户ID 看UNIX相关的书时经常能遇到这几个概念,但一直没有好好去理清这几个概念,以致对这几个概念一直一知半解。今天好好区分了一下这几个概念并总结如下。说白了这几个UID引出都是为了系统的权限管理。 下面分别用RUID,转载 2014-01-03 22:18:24 · 821 阅读 · 0 评论 -
AUPE学习第八章------进程控制
每个进程都有一个非负整形表示的唯一进程ID。init进程是一号进程,是第一个用户态的进程。它负责内核启动以后启动一个unix系统,它读取的配置文件一般在/etc/rc*、/etc/inittab、/etc/init.d中。下面的函数返回进程的一些标识:pid_t getpid(void) //调用进程的进程ID.pid_t getppid(void) //调用进原创 2014-01-02 20:13:25 · 1360 阅读 · 0 评论 -
AUPE学习第七章------进程环境
7.2main函数c程序总是从main函数开始执行。main函数的原型:int main(int argc, char *argv[ ])在执行main函数之前,先要调用一个启动例程。可执行文件将此启动例程指定为程序的起始地址。7.3进程终止进程有八种终止方式,五个正常终止,三个非正常终止。正常:从main返回、调用exit、调用_exit或者_Exit、最原创 2014-01-01 10:51:54 · 1625 阅读 · 0 评论 -
AUPE学习第五章------标准I/O库
基本上所有的操作系统都实现了标准I/O库。5.2流和FILE对象所有的I/O函数都是针对文件描述符的。当文件打开时,就返回一个文件描述符,然后用这个文件描述符做后续的I/O操作。标准I/O库的操作是围绕流来进行的,当标准I/O库打开一个文件的时候,一个文件已经与一个流关联了。我们可以用freopen函数来清除一个流定向,然后用fwide函数来设置一个流定向。int fwid原创 2013-12-30 17:23:29 · 1655 阅读 · 0 评论 -
AUPE学习第六章------系统数据文件盒信息
unix系统的口令文件包含下面的各字段,这些字段包含在中定义的passwd结构中。Descriptionstruct passwd memberPOSIX.1FreeBSD 5.2.1Linux 2.4.22Mac OS X 10.3Solaris 9user name原创 2013-12-31 20:39:46 · 2942 阅读 · 0 评论 -
AUPE学习第四章------文件和目录
如果我们希望知道文件的各种信息和特征,stat结构可以包含文件的所有属性。我们可以通过下面三个函数来得到文件的所有属性和信息:int stat(const char *restrict pathname, struct stat *restrict buf);int fstat(int filedes, struct stat *buf);原创 2013-12-28 20:16:07 · 1394 阅读 · 0 评论 -
Linux下获得系统时间的C语言的实现方法
#include //C语言的头文件 #include //C语言的I/O void main() { time_t now; //实例化time_t结构 struct tm *timenow; //实例化tm结构指针 time(&now); //time函数读取现在的时间(国际标准时间非北京时间),然后传值给now timenow = localtim转载 2013-12-28 15:23:59 · 1124 阅读 · 0 评论 -
unix高级环境编程(第12章高级终端)
出处:http://blog.sina.com.cn/s/blog_5d9c20070100gd7a.html1.非阻塞I /O:系统调用的两种分类:低速系统调用和其他。低速系统调用可能产生阻塞。非阻塞:例如open、read和write操作不能完成,则立即出错返回。两种方法对给给定得描述符制定非阻塞I/O:(1)如果是调用open以获得该描述符转载 2014-02-24 16:02:31 · 1044 阅读 · 0 评论