有时我们希望把标准输入重定向到一个文件,或者把标准输出重定向到一个网络连接。 dup()与dup2()能对输入文件描述符进行重定向。 int dup(int oldfd); int dup2(int oldfd, intnewfd); dup函数创建一个新的文件描述符,该新文件描述符和原有文件描述符oldfd指向相同的文件、管道或者网络连接。 并且dup返回的文件描述符总是取系统当前可用的最小整数值。dup2和dup类似,不过它将返回第一个不小于oldfd的整数值。dup和dup2失败时返回-1并设置errno。
一、 Reactor and Proactor 1 概述 IO读写时,多路复用机制都会依赖对一个事件多路分离器,负责把源事件的IO 事件分离出来,分别到相应的read/write事件分离器。涉及到事件分离器的两种模式分别就是 Reactor和Proactor,Reactor是基于同步IO的,Proactor是基于异步IO的。
参考: https://github.com/howeyc/fsnotify https://beego.me/docs/install/bee.md bee 使用fsnotify包,使用kqueue检查文件变化,根据修改时间戳,每s检查一次,如果有变化就重新编译,调用路径如下: beego/bee/bee.go var commands = []*Command{ cmdNew, cmdRun, … } func main() { … for _, cmd := range commands { … os.Exit(cmd.Run(cmd, args)) … }
参考:https://git-scm.com/book/zh/v2/Git-%E5%86%85%E9%83%A8%E5%8E%9F%E7%90%86-%E5%BA%95%E5%B1%82%E5%91%BD%E4%BB%A4%E5%92%8C%E9%AB%98%E5%B1%82%E5%91%BD%E4%BB%A4 Git 内部原理 不管你是从前面的章节直接跳到了本章,还是读完了其余各章一直到这,你都将在本章见识 Git 的内部工作原理和实现方式。我个人发现学习这些内容对于理解 Git 的用处和强大是非常重要的,不过也有人认为这些内容对于初学者来说可能难以理解且过于复杂。正因如此我把这部分内容放在最后一章,你在学习过程中可以先阅 读这部分,也可以晚点阅读这部分,这完全取决于你自己。
它比scp更强大,支持“不覆盖”原目录 例子: rsync -avz –progress /root/client/ root@202.112.23.12:/home/work/