#include "apue.h" #include <errno.h> int main(int argc,char *argv[]) { fprintf(stderr,"EACCES: %s\n",strerror(EACCES)); errno=ENOENT; perror(argv[0]); exit(0); }
编译:
gcc -o stderror stderror.c
运行:
./stderror
结果:
EACCES: Permission denied
./stderror: No such file or directory
程序说明:
程序中的argv[0]指的是./stderror,其作为参数传递给perror。这是一个标准的UNIX惯例。使用这种方法,在程序作为管道线的一部分执行时,例如:
prog1 < inputfile | prog2 | prog3 > ouputfile
我们就能分清三个程序中哪一个产生了一条特定的出错消息。