02 2013 档案

摘要:一个表达式E的逆波兰式如下定义:如果E是一个变量或者常量,E的后缀式是其自身;如果E是E1 op E2的形式,则其后缀式是E1' E2' op的形式,其中E1'表示E1的后缀式;如果E=(E1),那么E的后缀式与E1相同(换言之,逆波兰式不需要括号来表示优先级);将一个普通的中缀表达式exp转换为逆序表达式的一般算法是:stack s1,s2; //s1是临时存放运算符的,s2是存放后缀式的s1.push('#'); //放入优先级最低的符号for x in exp:if(x is num):y=got(x);//注意这里got函数里面必须完成x迭代器的 阅读全文
posted @ 2013-02-28 22:17 生无所息 阅读(394) 评论(0) 推荐(0) 编辑
摘要:对于CS的课程,除了离散数学和编译原理这种抽象程度较高的理论课,其他的基本都要自己动手写代码、观察和调试的,这里的读书笔记其实没啥大用,只是作为一个督促自我学习的方式,同时也算是以后方便查询的index吧。马上就要开学,华为的习题还没做,今天开始添加此项任务吧。IPC方式,POSIX.1规定的有pipe和FIFO;XSI扩展中又添加了消息队列、信号量和共享内存,以及网络编程中的套接字;XSI可选部... 阅读全文
posted @ 2013-02-17 16:14 生无所息 阅读(230) 评论(0) 推荐(0) 编辑
摘要:本章主要讲解高级I/O,是以后各章学习的基础。非阻塞I/O:指定文件打开方式时,oflag中添加O_NONBLOCK标志,或者对已经打开的文件描述符使用fcntl更换文件的打开标志。记录锁record locking的作用是:可以锁定文件中的一部分,阻止其他进程修改同一文件区。使用fcntl函数完成该功能,int fcntl(int filedes, int cmd, …/*struct floc... 阅读全文
posted @ 2013-02-15 14:51 生无所息 阅读(200) 评论(0) 推荐(0) 编辑
摘要:这两章讲诉线程和线程控制的相关api。为什么要有线程呢,因为线程更快,并发操作操作资源更简单。注:线程系函数多半并不设置errno,而是直接返回错误码。线程独立的资源:线程ID,一组寄存器、栈、调度优先级、策略、信号屏蔽字、errno和private data;线程ID:pthread_t,实现可以用一个结构来表示,因此不能直接操作,需要用#include <pthread.h>int pthre... 阅读全文
posted @ 2013-02-07 17:52 生无所息 阅读(276) 评论(0) 推荐(0) 编辑
摘要:终端登录过程:init读取/ect/ttys,对每一个允许登陆的中断设备fork一次,子进程执行getty程序,getty为终端设备调用open函数(read | write),打开后设置filedes 0,1,2;getty输出login等待用户输入用户名,然后调用login程序(execle传入环境变量)。后者使用getpwnam获得用户口令登陆项,再调用getpass显示提示符提示用户输入... 阅读全文
posted @ 2013-02-02 17:11 生无所息 阅读(241) 评论(0) 推荐(0) 编辑