- 論壇徽章:
- 0
|
使用了exit按理說(shuō)應(yīng)該會(huì)關(guān)閉所有的打開的流,使用vfork出來(lái)的子進(jìn)程用exit退出的話,因?yàn)樽舆M(jìn)程在父進(jìn)程的地址空間運(yùn)行,所以其父進(jìn)程的流應(yīng)該被關(guān)閉,最后一條pid就打不出來(lái)了,這點(diǎn)在unix上我驗(yàn)證了,但是在linux里面發(fā)現(xiàn)vfork出來(lái)的子進(jìn)程exit退出和_exit退出沒(méi)有區(qū)別.代碼大致如下:
#include <sys/types.h>
main( int argc,char* argv[] )
{
pid_t pid;
if( ( pid = vfork( ) ) < 0 )
// if( ( pid = fork( ) ) < 0 )
printf( "fork error!\n" );
if( pid == 0 ){
printf( "child process!\n" );
// _exit(0);
exit(0);
}
else
printf( "pid[%d]\n",getpid() );
exit(0) ;
} |
|