03 2016 档案
摘要:fork在面试中经常被问到,在这里复习一下。 frok创建子进程,父子进程共享.text段,子进程获得父进程数据段、堆和栈的副本,由于在fork之后经常跟随者exec,所以很多实现并不执行父进程数据段、堆和栈的完全复制,而是使用写时复制(Copy-On-Write,COW)技术。这些区域由父子进程共
阅读全文
摘要:管道 管道是unix ipc的最古老形式,是一种在内存中的特殊文件,只能在具有公共祖先的进程之间使用(即父子进程,兄弟进程)。 管道由pipe函数创建 fd[1]写,fd[0]读。 单个进程的管道几乎没有任何用处,通常,调用pipe的进程接着调用fork,这样就创建了父子进程间的管道。 输出结果:
阅读全文
摘要:std::move(t)负责将t的类型转换为右值引用,这种功能很有用,可以用在swap中,也可以用来解决完美转发。 std::move()的源码如下 先说一下实参为左值的情况。 按理来说左值是无法匹配右值形参的,但是c++为了move这个基础设施开了两个例外。 第一个例外是当形参为右值引用,实参为左
阅读全文
摘要:经典题目,用两个栈实现队列 两个栈s[0]和s[1],一个用来入列,一个用来出列。 当s[1]为空时,执行pop()时就将s[0]的值push进s[1],再将s[1]的栈顶pop()
阅读全文
摘要:《数据结构》中表达式求值的经典算法是用两个栈,一个存数字,一个存运算符。依次读入表达式中的每个字符,若是数字则进数字栈,若是运算符则和运算符栈的栈顶运算符比较优先权作相应操作,直至整个表达式求值完毕。运算符的优先级表如下 + - * / ( ) # + > > < < < > > - > > < <
阅读全文

浙公网安备 33010602011771号