码迷,mamicode.com
首页 > 其他好文 > 详细

return和exit的区别

时间:2014-06-25 07:07:43      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:return和exit的区别

#include<stdio.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<unistd.h>
#include<signal.h>


int main( void )
{
    daemon_init();

    fprintf(stderr, "main进程[%d]\n", getpid() );
    while( 1 )
    {
    }

    exit(0);
}


int daemon_init()
{
    pid_t pid;

    if( getppid() == 1 )
    {

        umask( 0 );

        return 0;
    }


    if( (pid = fork()) < 0 )
    {
        fprintf(stderr, "fork err!\n");
        return -1;
    }
    else if( pid > 0 )
    {
        fprintf( stderr, "结束进程[%d]\n", getpid() );
        //exit( 0 );

return 0;
    }

    fprintf( stderr, "孤儿进程[%d]\n", getpid() );
    signal( SIGHUP, SIG_IGN );
    signal( SIGQUIT, SIG_IGN );
    signal( SIGCHLD, SIG_IGN );

    setsid();
    umask( 0 );

    return 0;

}

30行如果为exit( 0 ),运行结果:

孤儿进程[9777]
main进程[9777]
结束进程[9776]


如果将30行的exit( 0 )替换为return 0,运行结果:

孤儿进程[9777]
main进程[9777]
结束进程[9776]
main进程[9776]


这就体现了return和exit的区别之一,return是逐层退出,而exit是立即结束进程。

return和exit的区别,布布扣,bubuko.com

return和exit的区别

标签:return和exit的区别

原文地址:http://blog.csdn.net/ssz912728941/article/details/34106931

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!