在modern c++中通过RAII可以保证对象的构造和析构是成对出现。

Foo foo;
fork();
foo.doit();     // 父子进程中都使用foo
// 析构函数会被调用两次,父进程和子进程各一次

因此,我们在编写服务端程序的时候,“是否允许fork()”是在一开始就应该慎重考虑的问题,在一个没有为fork()做好准备的程序中使用fork(),会遇到难以预料的问题。