易截截图软件、单文件、免安装、纯绿色、仅160KB

win32错误码和linux的错误码的简单转换

我们知道,在linux下,我们用errno来查看API返回的错误码,并用strerror(errno)来获得错误信息。
而在windows下也有这的错误码,可以用GetLastError
来获得,在windows下,要获得错误码对应的信息就没有linux下那么方便了。
其获得方式可以参考《windows核心编程》。
但我们也可以用linux下的api来获得windows下的错误信息,其条件就是把windows下的错误码转换成linux下相应的错误码,然后再调用
strerror(errno)来获得错误信息。
如果我们在windows下用cygwin来写程序,那么从windows下的API获得的错误吗,如果用linux下的函数strerror(errno)来显示的话,那么我们就要做一个win32错误码和linux下错误码的一个简单转换。
这个简单转换的函数如下:
int w32error_to_errno(unsigned int w32error)
{
switch (w32error) {
case ERROR_INVALID_FUNCTION:
return EBADRQC;
case ERROR_FILE_NOT_FOUND:
case ERROR_PATH_NOT_FOUND:
case ERROR_INVALID_NAME:
return ENOENT;
case ERROR_TOO_MANY_OPEN_FILES:
return EMFILE;
case ERROR_ACCESS_DENIED:
return EACCES;
case ERROR_INVALID_HANDLE:
return EBADF;
case ERROR_NOT_ENOUGH_MEMORY:
return ENOMEM;
case ERROR_OUTOFMEMORY:
return ENOSPC;
case ERROR_INVALID_DRIVE:
case ERROR_BAD_UNIT:
return ENODEV;
case ERROR_WRITE_PROTECT:
return EROFS;
case ERROR_NOT_READY:
case ERROR_SHARING_VIOLATION:
return EBUSY;
case ERROR_BAD_COMMAND:
return EINVAL;
case ERROR_SEEK:
case ERROR_NEGATIVE_SEEK:
return ESPIPE;
case ERROR_NOT_SUPPORTED:
return EOPNOTSUPP;
case ERROR_BAD_NETPATH:
return ENOSHARE;
default:
/* generic message */
return ENOMSG;
}
}
那么,如果我们想输出错误信息,就可以这样了
errno = w32error_to_errno(GetLastError());
strerror(errno);
虽然,不能获得完全准确的错误信息,但这个对于夸win32和linux的编程来说,至少可以省下一部分麻烦。


相关文档:

Linux 学习第一天 搭建环境,编译,调试,运行

1、用虚拟机加windows开发linux程序
2、编辑器用SourceInsight
3、构建共享目录,挂载共享目录
4、windows下共享目录权限的设置
5、用编译器编译出可执行程序
linux下 网络编程 必备头文件
#include <sys/types.h>
#include <sys/socket.h>
#include <errno.h>
#include <netinet/in.h>
......

Linux根文件系统结构再认识


INTRO
尽管Linux的根文件系统在形式表现上是一体的(所有数据目录均为根目录下的子目录),但实际它们是多个不同的【逻辑主体】(为了实现不同的逻辑功能)组合在一起的,参见下图。这也解释了为什么有些节点(如/var)可以挂接到不同磁盘分区上。划分这些逻辑部分对清晰把握根文件系统结构,以及整个系统的行为都有很大 ......

Linux下JDK的安装手记

Linux下JDK的安装步骤:
 
第一部:改权限
[root@wxr java]# pwd
/usr/java
[root@wxr java]# chomd 755 jdk-6u19-linux-i586.bin
首先更改操作权限,加入写入和执行的权限。
 
 
第二部:安装
执行这个jdk-6u19-linux-i586.bin二进制可执行程序,实现安装:
[root@wxr java]# ./jdk-6u19-linux- ......

Linux 启动过程详解

随着Linux的应用日益广泛,特别是在网络应用方面,有大量的网络服务器使用Linux操作系统。由于Linux的桌面应用和Windows相比还有一定的差距,所以在企业应用中往往是Linux和Windows操作系统共存形成异构网络。在服务器端大多使用Linux和Unix的,目前Linux的擅长应用领域是单一应用的基础服务器应用,譬如DNS和DHCP服务器、W ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号