1.IO重定向功能分析
IO重定向也是Shell的基本功能之一,这篇文章比较全面地介绍了Linux Shell的IO重定向功能。总结一下,IO重定向的大致格式是这样:
cmd [src | &] (> | < | >> ) (& num|-) | dst
貌似写得有点复杂(我不是故意的)。解释一下,整个重定向语句由三部分组成:
IO重定向也是Shell的基本功能之一,这篇文章比较全面地介绍了Linux Shell的IO重定向功能。总结一下,IO重定向的大致格式是这样:
cmd [src | &] (> | < | >> ) (& num|-) | dst
貌似写得有点复杂(我不是故意的)。解释一下,整个重定向语句由三部分组成:
在写完一个最简单的命令解释器以后,我给自己的shell起了个名字——jdsh(JackalDire Shell)。
本来以为加入后台执行不是什么难事,但是认真想了一下要处理好一个字符‘&’不是一般的麻烦,各种问题接踵而至,于是决定先找点轻松的活干。
寒假在做Linux Kernel Project这本书上的习题,第二章的练习是写一个简单的shell,看了一下要求觉得这个练习很有价值,涉及到很多Linux C Programming的知识,所以准备认真地做一下。
可见写一个shell并不是一件简单的事,从简单的一步一步做起吧,手头有APUE,一边做一边查。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | result love(boy, girl) { if ( boy.有房() and boy.有车() ) { boy.set(nothing); return girl.嫁给(boy); } else if (girl.愿意等()) { while( ! (boy.赚钱 > 1e6 and girl.感情 > 8 )) { for (day=1; day <=365; day++) { if ( day == 情人节 ) if ( boy.givegirl(玫瑰) ) girl.感情++; else girl.感情--; if( day == girl.生日) if ( boy.givegirl(玫瑰) ) girl.感情++; else girl.感情--; boy.拼命赚钱(); if( girl.耐心 == 0 && girl.有其它追求者) { girl.goto(nother_boy); boy.郁闷中(); boy.天天到BYR灌水(); return 没有结果; } } } try { girl.要男友买房(); girl.要男友买车(); girl.每天逛专卖店(); if ( boy.有房() && boy.有车() ) { girl.去澳洲旅游(boy); girl.到英国威斯敏斯结婚(boy); girl.嫁给(boy); boy.没日没夜挣钱(); } } catch() { girl.byebye(boy); boy.郁闷中(); boy.天天到天涯灌水(); return girl.broadcast("这个男人真小气"); } return girl.每天逛专卖店(); } return girl.goto(another_boy); } |
没事搜了一下自己域名,无意间发现老早提交的open directory申请居然通过了…想到一个多月没写东西,大惭…
为了尽快阻止这个连续N天没有日志的记录,先找一篇凑数…
有人在byr论坛C++版上问了这样一道C++面试题:
class A { public: void fun() { } }; class B: public A { public: virtual void fun() { } }; class C: public B { public: void fun(){} }; class D: virtual public A { public: void fun(){} }; int main(void) { void *p; ((A*)NULL)->fun(); ((C*)NULL)->fun(); // why fault here? ((D*)NULL)->fun(); return 0; }
为什么在((C*)NULL)->fun()这句挂了呢?