c中的unix_error函数问题

时间:2014-04-12 19:57:28

标签: c linux unix error-handling

所以我在使用unix_error函数时遇到问题,我相信我没有包含特定文件,但我似乎无法找到我需要在互联网上包含哪些文件。有什么提示吗?

编辑:我写的是这样的......

while((pid = waitpid(-1, NULL, 0)) > 0){
        printf("SERVER: Handler reaped child %d\n", (int) pid);
        child_count--;
    }
    if(errno != ECHILD){
        unix_error("waitpid error");
    }
    sleep(2);
    return;

尝试编译unix_error

时出错

1 个答案:

答案 0 :(得分:0)

没有标准功能unix_error()

出于多种目的,您可以使用此代码。

unixerr.h

#ifndef UNIXERR_H_INCLUDED
#define UNIXERR_H_INCLUDED

extern void unix_error(const char *msg);

#endif /* UNIXERR_H_INCLUDED */

unixerr.c

#include "unixerr.h"
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void unix_error(const char *msg)
{
    int errnum = errno;
    fprintf(stderr, "%s (%d: %s)\n", msg, errnum, strerror(errnum));
    exit(EXIT_FAILURE);
}

可以进行许多改进。主要的一个是将程序名称添加到输出的开头。另一个是使函数支持像printf()这样的可变长度参数列表。有些人不喜欢打印错误号码;我更喜欢它。