所以我在使用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
时出错答案 0 :(得分:0)
没有标准功能unix_error()
。
出于多种目的,您可以使用此代码。
#ifndef UNIXERR_H_INCLUDED
#define UNIXERR_H_INCLUDED
extern void unix_error(const char *msg);
#endif /* UNIXERR_H_INCLUDED */
#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()
这样的可变长度参数列表。有些人不喜欢打印错误号码;我更喜欢它。