ssh答辩已通过,于是准备学习unix编程的一些具体内容。
今天看《unix环境高级编程》时,很多地方似懂非懂,最奇怪的是vfork,我竟然完全不能理解它。手册上对它的解释是仅生成进程,但不复制任何内容。我已经忘记生成进程时需要复制哪些内容了。大概是页表和任务控制块吧,怎么可能不复制这个呢?如果复制这个,那么它跟fork又有什么区别呢。其实连fork做哪些我也忘了。即使不忘,那也是linux的代码,与bsd肯定差别不小。因此,我觉得有必要读一下源代码了。
谁知一开始就受挫!引导代码boot.s竟然是用at&t写的,为了看下去,得先学习at&t语法。在学习过程中继续受挫,将教程中现成的代码拷到机子上居然执行不了!一看,那是给linux写的,便马上怀疑难不成bsd的系统调用号都不一样?几经查找,调用号是没变,但好像传参方式变了?在bsd手册上有演示,但万万不幸的是,演示代码竟然又是intel语法的!而且作者还强调他只熟悉这种语法,晕了,难不成这个手册的作者不是bsd的开发者??不过intel语法是看得懂的,可是在将它照搬成at&t时,又受挫了!虽然能运行,但什么输出都没有,要它打印一个字符串也不行。我开始怀疑自己是不是太急功近利了。还是先把at&t的手册看完吧。
好了就这么开始吧,先耐心把at&t看完再说。