第3章 资源管理
Resource Management
所谓资源就是,一旦用了它,将来必须还给系统.C++程序中最常使用的资源就是动态内存分配(如果分配内存从来都增归还,会导致内存泄露).其他常见的资源还有文件描述符(file descriptors),互斥锁(mutex locks),图形界面中的字型和笔刷,数据库连接,以及网络sockets.不论哪一种资源...
分类:
编程语言 时间:
2015-08-31 01:15:43
阅读次数:
149
每个进程在PCB(Process Control Block)中都保存着一份文件描述符表,文件描述符就是这个表的索引,每个表项都有一个指向已打开文件的指针,现在我们明确一下:已打开的文件在内核中用file结构体表示,文件描述符表中的指针指向file结构体。
分类:
其他好文 时间:
2015-08-30 21:05:42
阅读次数:
131
1、对于系统调用中的IO,是针对文件描述符的。而对于标准的IO是针对流的。
标准的IO函数返回一个指向FILE的指针。
2、打开流
FILE *f;
f = fopen("./a.txt",wr+);
通过上面得到打开文件的指针,以后的操作可以根据此指针来进行。
3、读和写数据流
(1)每次读一个字符的IO: getc(f) fgetc(f) getch...
分类:
其他好文 时间:
2015-08-30 15:52:47
阅读次数:
175
一、Inotify介绍:Inotify是一个Linux内核特性,它监控文件系统,并且及时向专门的应用程序发出相关的事件警告,比如删除、读、写和卸载操作等。您还可以跟踪活动的源头和目标等细节。使用inotify很简单:创建一个文件描述符,附加一个或多个监视器(一个监视器是一个路径和一..
分类:
其他好文 时间:
2015-08-30 01:13:56
阅读次数:
1439
一、阻塞io操作和非阻塞io操作
对于阻塞io操作:当cpu得不到需要的文件数据的时候,则将自己挂起,直到有了数据,才能执行下面的操作。
非阻塞io: 当cpu得不到文件时候,其一直在轮询cpu,直达得到数据。
二、文件描述符
对于内核而言,所有打开的文件,都用文件描述符来引用。所有的文件操作都是由内核态完成的,当一个用户的进程创建一个文件时候,内核会给其返回一个文件描述符。
...
分类:
其他好文 时间:
2015-08-29 21:50:15
阅读次数:
219
标准输出输入设备stdin linux shell数据重定向(输入重定向与输出重定向)详细分析 。它们就是与几个特殊文件描述符对应,fd0,fd1,fd2 (stdin,stdout,stderr) 如: [chengmo@centos5 shell]$ cat>teststdin</de...
分类:
系统相关 时间:
2015-08-28 15:48:09
阅读次数:
801
套接字描述符和通用文件描述符在形式上没有区别,那么如何判断一个文件描述符是否是套接字描述符呢?下面我们就简单的自定义一个函数issockettype,用于套接字描述符判定。#include
#include
#include
#include
#include
#include...
分类:
系统相关 时间:
2015-08-27 13:37:23
阅读次数:
156
1.i3工控机串口: 顺序:从下往上为com1~com6 通信:com3打开失败(坏的文件描述符)2,i5: 顺序:从下往上为com1~com6 通信:com1:打开ok,通信失败 com2:ok com3:打开失败 com4:ok com5;o...
分类:
其他好文 时间:
2015-08-26 21:48:20
阅读次数:
191
文件描述符在内核中,所有打开的文件都使用文件描述符(一个非负整数)标记。文件描述符的变化范围是0~OPEN_MAX – 1。早期的unix系统中,每个进程最多可以同时打开20个文件,就是说文件描述符的范围为0~19,但是现在很多系统将其增加到0~63。#include int open(const ...
分类:
系统相关 时间:
2015-08-26 17:21:07
阅读次数:
403
打开的文件都有一个fd:filedescriptor(文件描述符)标准输入:keyborad,0标准输出:monitor,1标准错误输出:monitor,2I/O重定向:改变标准位置输出重定向:COMMAND>NEW_POS,COMMAND>>NEW_POS>:覆盖重定向,目标文件中的原有内容会被清除;>>:追加重定向,新..
分类:
系统相关 时间:
2015-08-26 07:13:19
阅读次数:
242