10 2011 档案

摘要:Tcl简介(一):Tcl 语法Tcl 语法Tcl是一种很通用的脚本语言,它几乎在所有的平台上都可以释运行,其强大的功能和简单精妙的语法会使你感到由衷的喜悦,这片文章对 Tcl有很好的描述和说明。如果你看起来很吃力,那是因为 Tcl与一般的语言有一些不同之处,刚开始可能有一些不理解,但很快就会掌握的。请坚持一下,我能坚持写完,你至少也应该坚持读一遍吧!Tcl Overview这篇文章里包含了几乎 Tcl 的全部。文章的作者是Tcl的缔造者John Ousterhout,对Tcl的诠释非常清楚。Introduction 简介Tcl 代表 "tool command language&qu 阅读全文
posted @ 2011-10-27 23:10 only_eVonne 阅读(35689) 评论(4) 推荐(5)
摘要:feof()的实现与平台有关。在stdio.h中feof的定义:#define _IOEOF 0x0010#define feof(_stream) ((_stream)->_flag & _IOEOF)由此可知,只有当fp->_flag & 0x0010为真时,才认为文件结束了。在VC里,只有当file position indicator(在Windows上是fp->_ptr)到了文件末尾,然后再发生读/写操作时,fp->_flag才会被置为含有_IOEOF,然后再调用feof(),才会得到文件结束的信息,并不是file position indic 阅读全文
posted @ 2011-10-21 13:21 only_eVonne 阅读(601) 评论(0) 推荐(0)
摘要:#include <stdio.h>int fseek(FILE *fp, long offset, int whence);fseek 会调用 lseek,lseek 的功能是修改 file table 中 file 数据结构的 offset(内核层),offset(内核层)的值是由 offset(应用层)和 whence 计算而来。lseek system call has nothing to do with the seek operation that positions a disk arm over a particular disk sector。至此,fseek 阅读全文
posted @ 2011-10-21 13:20 only_eVonne 阅读(960) 评论(0) 推荐(0)
摘要:1、时间类型。Linux下常用的时间类型:time_t,struct timeval,struct tm(1)time_t是一个长整型,一般用来表示用1970年以来的秒数。(2)Struct timeval有两个成员,一个是秒,一个是微妙。struct timeval { long tv_sec; long tv_usec; };(3)struct tm是直观意义上的时间表示方法:struct tm { int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_. 阅读全文
posted @ 2011-10-20 22:57 only_eVonne 阅读(1926) 评论(0) 推荐(0)
摘要:popen函数的实现包括一下几步:1、使用pipe()建立管道2、使用fork()创建子进程3、在子进程中调用exec族函数执行命令,通过管道将结果传送至父进程4、在主进程中等待子进程执行,子进程执行完成后将接收其结果,返回结果的文件指针类似与system(fork与exec函数的组合),popen在启动另外一个线程时,该线程有可能启动失败或者popen执行shell时失败了,但这个时候popen本身不会报错,直接就造成调用popen的父进程卡住了。可以通过验证errno来避免。下面是popen()在linux中的实现:/**popen.cWrittenbyW.RichardStevens*/ 阅读全文
posted @ 2011-10-20 21:26 only_eVonne 阅读(10102) 评论(3) 推荐(1)
摘要:linux文件IO操作可以分为两种:1.带缓存的文件IO操作,包括fopen, fclose, fread, fwrite, fgetc, fgets, fputc, fputs, freopen, fseek, ftell, rewind等2.不带缓存的文件IO操作,包括open, close, read, write, getc, getchar, putc, putchar 等两者的区别:1.带缓存的io操作是在标准C里面定义的(可移植),而不带缓存的io操作是POSIX中定义的(不可移植),属于系统调用。带缓存的实际上是在不带缓存的基础之上封装了一层,维护了一个输入输出缓冲区,使之能跨 阅读全文
posted @ 2011-10-20 20:51 only_eVonne 阅读(1213) 评论(0) 推荐(0)
摘要:1.vfork保证子进程先运行,在它调用exec或exit之后父进程才可能被调度运行。如果在调用这两个函数之前子进程依赖于父进程的进一步动作,则会导致死锁。2.fork要拷贝父进程的进程环境;而vfork则不需要完全拷贝父进程的进程环境,在子进程没有调用exec和exit之前,子进程与父进程共享进程环境,相当于线程的概念,此时父进程阻塞等待。为什么会有vfork呢?因为以前的fork当它创建一个子进程时,将会创建一个新的地址空间,并且拷贝父进程的资源,然后将会有两种行为:1.执行从父进程那里拷贝过来的代码段2.调用一个exec执行一个新的代码段当进程调用exec函数时,一个新程序替换了当前进程 阅读全文
posted @ 2011-10-19 23:04 only_eVonne 阅读(10466) 评论(0) 推荐(6)
摘要:取消命令在vi中,只要没有把修改结果存入磁盘文件中,那么就可以通过“取消”来撤销最近的操作或对缓冲区的修改。假设你无意删除了一行文本、改变了一些你不应该改变的内容或增加了一些不正确的文本,可以按<Esc>改变到命令模式中,然后按<u>,则文件内容恢复到修改前的样子。保存到文件名为filename的文件中发出写命令格式: :w filename不使用小键盘来定位光标vi用<h>、<j>、<k>、<l>键来定位光标。其中<h>、<l>键表示光标的左右移动,<j>、<k>键表示光标 阅读全文
posted @ 2011-10-17 20:49 only_eVonne 阅读(591) 评论(0) 推荐(0)
摘要:1.哈希表的概念:哈希是一种重要的存储方法,也是一种重要的查找方法。它的基本思想是:以关键字K为自变量,通过一个确定的函数f,计算出对应的函数值f(k),把这个值解释为关键字等于K的结点的存储地址。查找时,再根据要查找的关键字用同样的函数计算地址,然后到相应的存储单元取出要查找的结点。按这个思想建立的表,称为哈希表,称函数f为哈希函数,称f(k)的值为哈希地址。哈希表实例:已知线性表的关键字集合为:S={and,begin,do,end,for,go,if,then,until}则可设哈希表为:charHT[26][8]哈希函数H(key)的值,可取关键字key中第一个字母在字母表中的序号(0 阅读全文
posted @ 2011-10-16 11:10 only_eVonne 阅读(15409) 评论(0) 推荐(0)
摘要:hash定义:把任意长度的输入,通过hash算法,变换成固定长度的输出。输出的空间通常远小于输入值的空间。 数学表达式:h = H(M) 其中H()为单向hash算法,M为任意长度输入,h为固定长度的输出一般应用的Hash算法,还需要满足其他关键特性: 第一当然是单向性(one-way),从预映射,能够简单迅速的得到散列值,而在计算上不可能 构造一个预映射,使其散列结果等于某个特定的散列值,即构造相应的M=H-1(h)不可行。 这样,散列值就能在统计上唯一的表征输入值,因此,密码学上的 Hash 又被称为"消息摘 要(message digest)",就是要求能方便的将&q 阅读全文
posted @ 2011-10-15 21:23 only_eVonne 阅读(1329) 评论(0) 推荐(0)
摘要:Linux的变量种类,按变量的生存周期来划分,Linux变量可分为两类:永久的:需要修改配置文件,变量永久生效。临时的:使用export命令声明即可,变量在关闭shell时失效。设置变量的三种方法1 在/etc/profile文件中添加变量【对所有用户生效(永久的)】 用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”。 例如:编辑/etc/profile文件,添加CLASSPATH变量 # vi /etc/profile export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib 注... 阅读全文
posted @ 2011-10-03 14:46 only_eVonne 阅读(981) 评论(0) 推荐(0)
摘要:解压语法:tar [主选项+辅选项] 文件或者目录使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用。主选项:c 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。相当于打包。x 从档案文件中释放文件。相当于拆包。t 列出档案文件的内容,查看已经备份了哪些文件。特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩。辅助选项:-z :是否同时具有 gzip 的属性?亦即是否需要用 gzip 压缩或解压? 一般格式为xx.tar.gz或xx. tgz-j :是否同时具有 bzip2 的属性?亦即是 阅读全文
posted @ 2011-10-03 12:35 only_eVonne 阅读(339060) 评论(0) 推荐(20)
摘要:NAMEinittab - 与 sysv 兼容的 init 进程使用的初始化文件格式 描述inittab 文件描述在系统引导及通常的操作期间, 都启动哪些进程 (比如 /etc/init.d/boot, /etc/init.d/rc, getty 等等). Init(8) 讨论有关 runlevels (运行级) 的概念, 每一个运行级都有它自己启动进程的集合. 有效的运行级为 0-6 加上用于 ondemand 条目的 A, B 和 C. inittab 文件中的每一个条目有如下的格式: id:runlevels:action:process 以 `#’ 开头的行被忽略. id initta 阅读全文
posted @ 2011-10-01 21:00 only_eVonne 阅读(646) 评论(0) 推荐(0)