摘要:
1.原码,反码,补码:(1)在n位的机器数中,最高位为符号位,该位为零表示为正,为一表示为负;其余n-1位为数值位,各位的值可为零或一。当真值为正时,原码、反码、补码数值位 完全相同;当真值为负时,原码的数值位保持原样,反码的数值位是原码数值位的各位取反,补码则是反码的最低位加一。注意符号位不变。2.无符号位运算(1)位运算应用口诀清零取反要用与,某位置一可用或若要取反和交换,轻轻松松用异或 (2)位运算符的应用(源操作数s掩码mask)按位与-- &:1清零特定位(mask中特定位置0,其它位为1,s=s&mask)2取某数中指定位(mask中特定位置1,其它位为0,s=s& 阅读全文
摘要:
移动光标ctrl+b: 前移一个字符(backward)ctrl+f: 后移一个字符(forward)alt+b: 前移一个单词alt+f: 后移一个单词ctrl+a: 移到行首(a是首字母)ctrl+e: 移到行尾(end)ctrl+x: 行首到当前光标替换编辑命令alt+.: 粘帖最后一次命令最... 阅读全文
摘要:
信号是软件中断,它提供了一种处理异步事件的方法。很多比较重要的应用程序都需要处理信号。每个信号都有一个名字,以SIG开头,比如SIGTTIN,当后台进程试图读取控制终端会收到此信号。这些信号都定义在中,都是正整数,不存在值为0的信号,kill函数对编号为0的信号有特俗用途,此种信号称为空信号。可以产... 阅读全文
摘要:
终端登录inti进程使系统进入多用户状态,init进程读/etc/ttys,对每一个允许登录的终端设备调用一次fork,它所产生的子进程执行getty程序getty为终端调用open函数,以读写方式打开终端,一旦终端被打开,则文件描述符0,1,2就被设置到该终端。getty输出:“login:”提示... 阅读全文
摘要:
进程标识每个进程都有一个非负数的唯一ID,称为进程ID,由于进程ID是唯一的,所以经常用于其他标识的一部分,比如文件名等进程除了拥有进程ID外还有其他的ID,通过下面函数可以获取这些ID:#include #include pid_t getpid(void); //return process ... 阅读全文
摘要:
main函数内核在通过exec执行main函数之前还会这行启动程序,启动程序地址通常由编译器和链接器在可执行程序中指定。启动程序从内核传递命令行参数以及环境变量传递给main函数以及做一些启动main函数的准备。进程终止正常终止:从main函数返回调用exit,_exit,_Exit进程中最后一个线... 阅读全文
摘要:
密码文件密码文件又称用户数据库,一般为/etc/passwd,对应的结构为struct passwd,该文件内容大体如下:描述passwd字段用户名char* pw_name加密密码char* pw_passwdUIDuid_t pw_uidGIDgid_t pw_gid注释char* pw_gec... 阅读全文
摘要:
标准IO由ISO C 标准的IO库,它处理了很多底层细节,比如合适的缓冲大小等等,因此更易于使用,但是也引入了一些其他问题。流向标准IO使用FILE对象关联流,流可以是面向宽字节的也可以是面向单字节的,当流初始化的时候是没有方向的,如果后面的IO操作是处理的宽字符集的,流变成面向宽字节的,如果哦是处... 阅读全文
摘要:
在unix下提到文件属性,不得不提的一个结构就是stat,stat结构一般定义如下:struct stat { dev_t st_dev; /* ID of device containing file */ ino_t ... 阅读全文
摘要:
内核通过文件描述符引用打开的文件,通常通过open函数或者create函数返回文件描述符。基本函数:unix中基础的文件操作函数只有5个,分别是open,close,lseek,read,write,这几个函数都是无缓冲的,意味着这些函数的执行都是在内核中完成的。open函数:#include in... 阅读全文
摘要:
一.Unix 体系结构由上图可以看出,内核居于最里层,Shell,Libary routines,以及Application通过系统调用(system calls)访问内核提供的功能。注意系统调用与函数调用的关系,两者不是一个东西。应用程序可以通过Shell和库访问内核功能,也可以直接通过系统调用访... 阅读全文