zoukankan      html  css  js  c++  java
  • 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] ", 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! ");
            return -1;
        }
        else if( pid > 0 )
        {
            fprintf( stderr, "结束进程[%d] ", getpid() );
            //exit( 0 );

    return 0;
        }

        fprintf( stderr, "孤儿进程[%d] ", 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是马上结束进程。

  • 相关阅读:
    html中script标签的使用方法
    css关于浮动的高度塌陷
    canvas用数组方式做出下雨效果
    canvas简易画板。
    html5新标签
    闭包的意义及用法
    字符串的添加方法
    js几种数组遍历方法.
    简易网页打卡页面.
    回忆继承多态
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/7151074.html
Copyright © 2011-2022 走看看