03 2020 档案
摘要:1. 中缀、前缀、后缀表达式 对于一个人可识别的表达式:1+(2+3)*4-5 根据操作符的位置不同分为: ①中缀表达式:1+(2+3)*4-5 ②前缀表达式:- + 1 * + 2 3 4 5 ③后缀表达式:1 2 3 + 4 * + 5 - 前缀表达式和后缀表达式里面已经包含了计算顺序,因此不需
阅读全文
摘要:1. 僵死进程 进程调用exit后,存储区已经释放,描述符已经关闭后,内核还为每一个进程保留了一定信息(进程ID、终止状态、使用的CPU时间等),需要其父进程调用wait、waitpid。若父进程没有对其调用wait。则子进程就是僵死进程。 如果父进程先于子进程结束,则该子进程父进程变成了init
阅读全文
摘要:1. restrict 表明两个指针不是指向同一个数据,便于编译器优化 int fun(int *a,int *b) { *a = 5; *b = 6; return *a+*b; } 如果a和b指向同一个地方,则返回12 int fun(int *restrict a,int *restrict
阅读全文
摘要:1. signal注册信号处理函数 void (*signal(int signum,void(*func)(int))) (int) signal函数需要两个参数,返回一个函数指针(返回的函数指针有一个整型入参,返回void),这个函数指针是之前的信号处理程序 2. kill、raise 发送信号
阅读全文
摘要:1. I/O模型 (1)阻塞式I/O (2)非阻塞式I/O 通过指定recvfrom的flag参数为 MSG_DONTWAIT,当没接收到数据时会直接返回而不阻塞,并设置errno为 EWOULDBLOCK 轮询/循环调用recvfrom直到有数据就绪,但会占用很多CPU时间 (3)I/O复用(se
阅读全文
摘要:1. 管道 fd[0]用来读,fd[1]用来写。fd[1]的输出是fd[0]的输入;成功返回0,失败-1 特点: 半双工:同一时间数据只能在一个方向上流动 只能在有共同祖先的两进程之间使用 是进程的资源,不在文件系统 父子进程间用匿名管道: 写一个读端已经关闭的管道,会产生信号 SIGPIPE,如果
阅读全文
摘要:1. 查看进程 (1)ps aux 用ps查看当前系统进的状态 选项含义:a:当前终端下所有用户所有进程信息 x:当前用户在所有终端下的进程 u:显示格式设置 USER:启动该进程的用户账户名称 PID:进程ID %CPU:CPU占用比 %MEM:内存占用比 VSZ:占用虚拟内存大小(swap空间)
阅读全文
摘要:1. 文件描述符 一个非负整数,当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。 每个文件打开时会在内核中建立一个文件表项,这个文件表项包括文件的状态信息、存储文件内容的缓冲区、当前文件的读写位置等,这些文件表项保存在内核的一个数组(文件表)里。 每个进程在内核中有一个整形数组,
阅读全文
摘要:1. 动态二维数组 目的:方便的构造一个m行n列的矩阵 2. 简单实现 这里用函数模板写 C++不支持函数模板的分离编译,因此需要把声明实现都写在一个文件里 myarray.h: 1 #ifndef TESTCPLUS_MYARRAY_H 2 #define TESTCPLUS_MYARRAY_H
阅读全文