摘要: 一个表达式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 生无所息 阅读(229) 评论(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) 编辑
摘要: 8~11章主要讲进程相关的内容。 进程标示符(PID),0是调度进程,1通常是init进程,2一般是页守护进程(pagedaemon),负责虚拟内存的分页操作。 #include <unistd.h> pid_t getpid(void); pid_t getppid(void);//parent pid uid_t getuid(void); uid_t geteuid(void); g... 阅读全文
posted @ 2013-01-27 16:45 生无所息 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 本章学习进程环境,主要是一些编译器、系统与程序直接的结合等方面的知识。常识部分略过,记录一些要点。main中return语句实质上仍然调用exit函数。使用atexit函数注册返回回调函数,其注册顺序与实际调用顺序相反。环境变量相关:全局变量environ可以直接读取环境变量表,函数getenv,setenv,putenv和unsetenv可以用来操作环境变量。#include <stdlib.h... 阅读全文
posted @ 2013-01-20 19:24 生无所息 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 本章学习系统数据文件的接口,以及系统标识函数、时间和日期等信息函数。口令文件:/etc/passwd#include <pwd.h>struct passwd{char *pw_name;//用户名*char *pw_passwd;//加密口令uid_t pw_uid;//user id*gid_t pw_gid;... 阅读全文
posted @ 2013-01-19 22:02 生无所息 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 本章学习ISO C,和一般C语言书籍中的内容大同小异,不过加入了Unix一些特有的扩展。流#include <stdio.h>#include <wchar.h>int fwide(FILE *fp, int mode);若mode=0,该函数确定流是否使用了宽字符集(注意不是Unicode),宽定向返回正值,字节定向返回负值,未定向返回0;如果流未定向,也可以使用mode参数将之定向;但该函数并... 阅读全文
posted @ 2013-01-19 18:45 生无所息 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 今天玩了会Lubuntu,也试了一试最新的codelite,凭良心说codelite做的比code::blocks更好用,虽然功能没有后者强大,但是手感上更类似visual studio,快捷键也相仿。另外code::blocks使用xterm太瞎眼,改为xfce4-terminal,方法是将Environments settings-General settings-Terminal to la... 阅读全文
posted @ 2013-01-16 21:06 生无所息 阅读(362) 评论(0) 推荐(0) 编辑