运行在redhat 7.9上。我将使用由apache的ProcBuilder或java 11的ProcessBuilder包装的dvd+rw-mediainfo来查询插入光驱的媒体状态。我想了解有关dvd+rw-mediainfo可能产生的退出值的信息。根据经验,我已经确定251表示没有磁盘插入驱动器,130表示没有与命令参数匹配的驱动器。还有什么我应该知道的出口密码吗?我看了看我在https://sources.debian.org/src/dvd+rw-tools/7.1-3/dvd+rw-mediainfo.cpp/上找到的c源代码,但那里没有返回代码的定义。包含的h文件并不多。我无法在我的系统中找到stddefine .h,我有点怀疑这可能是该位置。
#include <stdio.h>
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
我不太擅长c++(严格来说是java),但我希望找到一个定义退出代码的h文件。它们没有在命令的手册页条目中列出。当我看到在源代码中调用exit时,我不清楚这些值是在哪里定义的。
if ((err=cmd.transport(READ,inq,36)))
sperror ("INQUIRY",err),
exit (FATAL_START(errno));
我没有看到errno的值设置在哪里。我也找不到FATAL_START的定义。还有一个退出调用使用了一个我在任何地方都找不到定义的常量。
exit (FATAL_START(EINVAL));
关于errno
的值,请参阅errno.h
(以及其中包含的其他文件),在基于redhat的系统中,您可以在/usr/include/errno.h
中找到它,由glibc-headers
包提供。
查看到源代码的链接,宏FATAL_START
似乎在头文件传输中定义。Hxx,它只设置第7位:
#define FATAL_START(er) (0x80|(er))
那么,退出码251 = 128 + 123将对应如下:
#define ENOMEDIUM 123 /* No medium found */
130 = 128 + 2对应如下:
#define ENOENT 2 /* No such file or directory */