注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

信息 灵感 创新

I? =Information,Inspiration,Innovation

 
 
 

日志

 
 
关于我

we are 5. Mathematics, Computation, Programming, Engineering, and Making fun of life.

网易考拉推荐

stdlib.h下的函数(2)  

2014-05-30 15:35:26|  分类: C & C++ |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

4. 与环境相关的函数

这一类函数主要是处理退出以及与系统之间的交互的,函数包括abort、exit、atexit、system、getenv,以及C++ 11中新增的quick_exit、at_quick_exit和_Exit。

abort终止当前进程,产生一个非正常程序终止。而exit函数则是正常终结一个进程, 并执行终结进程的常规清理工作。abort是无参数函数,而exit则接收一个成为状态码的值,通常为 EXIT_SUCCESS或者EXIT_FAILURE,将退出的情况反馈给环境。如果不执行常规清理工作,则可以使用quick_exit函数。

atexit和at_quick_exit则是在退出时调用某个函数,下面这段代码演示了函数的使用:

#include <stdio.h>
#include <stdlib.h>

void msg(void)
{
    printf("ATEXIT FUNCTION CALL ME.\n");
}

int main()
{
    atexit(msg);
    printf("Test on atexit\n");
    return 0;
}
函数运行的顺序是先输出”Test on atexit”,然后在程序退出的时候才调用函数msg。注意如果有多个atexit函数调用,则按照入栈的顺序,先入栈的函数后执行,而最后一个atexit函数则最先执行。
system函数能够调用命令处理器执行系统命令,函数原型如下:
int system (const char* command);
如果所提供的参数指针为NULL,则该函数只是简单地检验系统是否含有命令处理器,当包含命令处理器的时候返回值为非零值,如果是其他命令,通常返回值取决于系统或者类库的实现,通常希望是调用命令之后系统的状态码。例如下面的代码:
#include <stdio.h>
#include <stdlib.h>

int main()
{
    if(system(NULL)==0)
    {
        printf("Could not find Command Processor\n");
        exit(EXIT_FAILURE);
    }
    int t=system("dir");
    printf ("The value returned was: %d.\n",t);
    return 0;
}

运行效果如下:

?

image

可以看到这个和命令行下执行dir是一样的效果。

getenv函数获取环境变量值,如果环境变量存在,则返回一个字符串指针,如果不存在,则返回NULL。例如,下面的代码获取PATH环境变量:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char* pPath;
    pPath = getenv ("PATH");
    if (pPath!=NULL)
        printf ("The current path is: %s\n",pPath);
    return 0;
}
程序运行效果如下:

image

  评论这张
 
阅读(437)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016