zoukankan      html  css  js  c++  java
  • errno 与 perror()/strerror()函数

    errno是个全局的int型变量,当调用一个系统函数时不管成功不成功都有可能改变errno的值。但只有不成功时errno的值才是有意义的。如果要真的想用errno进行多次打印,刚可以先将其缓存一下。
    下面的例子:

    <pre lang="c" escaped="true">
    #include <stdio.h>
    #include <stdlib.h>
    #include <errno.h>
    #include <string.h>

    int main(void)
    {
    FILE *fp = fopen("abcde", "r");
    if (NULL == fp)
    {
    int err = errno;
    printf("errno: %d. ", errno);
    errno = err;
    perror("Open file abcde");

    errno = err;
    fprintf(stderr, "%s, line %d:%s ", __FILE__, __LINE__, strerror(errno));
    exit(1);
    }

    return 0;
    }
    </pre>

    运行结果:


    <blockquote>
    [sbso@localhost c]$ vim perror_test.c
    [sbso@localhost c]$ gcc perror_test.c -o perror_test
    [sbso@localhost c]$ ./perror_test
    errno: 2.
    Open file abcde: No such file or directory
    perror_test.c, line 17:No such file or directory
    [sbso@localhost c]$

    </blockquote>

  • 相关阅读:
    IEnumerator & IEnumerable
    GameObject.Active
    Unity3D的四种坐标系
    gvim
    Platform Dependent Compilation
    delegate
    new 约束
    UIPanel
    UIButton
    UISprite
  • 原文地址:https://www.cnblogs.com/liweilijie/p/4984189.html
Copyright © 2011-2022 走看看