linux`usount`的返回码值是多少?

Ema*_* Ey 1 python linux

所以我已经交了一个python项目,其中有很多Linux系统调用mount/unmout/format/etc备份驱动器用于定制的NAS.

现在我想处理umount命令的输出并处理已卸载路径的情况:

print subprocess.check_output(['umount', '/storage/backup'])
Run Code Online (Sandbox Code Playgroud)

可能会返回:

umount: /storage/backup: not mounted
Command '['umount', '/storage/backup']' returned non-zero exit status 32
Run Code Online (Sandbox Code Playgroud)

现在,我可以解析输出字符串并搜索not mounted,但我更喜欢处理退出状态值(在本例中为32).我试图找到umount命令的退出代码列表,但到目前为止还不走运.
此外,我已经尝试找到umount的源代码,但一直无法找到它(谷歌一直指向umount命令的手册页或源代码mount.c)

编辑

手册页umount有错误列表(非数字),如:

  • EBUSY - 目标无法卸载,因为它很忙.
  • EFAULT - 用户地址空间之外的目标点.

然后: 下面给出的错误值来自文件系统类型独立错误.每种文件系统类型都可能有自己的特殊错误和自己的特殊行为.有关详细信息,请参阅Linux内核源代码.

有什么指针吗?

小智 9

来自man mount:

RETURN CODES
   mount has the following return codes (the bits can be ORed):

   0      success

   1      incorrect invocation or permissions

   2      system error (out of memory, cannot fork, no more loop devices)

   4      internal mount bug

   8      user interrupt

   16     problems writing or locking /etc/mtab

   32     mount failure

   64     some mount succeeded

   The command mount -a returns 0 (all succeeded), 32 (all failed), or  64
   (some failed, some succeeded).
Run Code Online (Sandbox Code Playgroud)

  • @EmanuelEy:我已经添加了mount(8)Linux手册页的链接. (2认同)
  • 这*不*回答这个问题,因为`umount`的返回值*不*匹配`mount`的返回值!实际上返回码是卸载失败的挂载点数,至少对于 util-linux 的 `umount`。参见 https://github.com/karelzak/util-linux/blob/master/sys-utils/umount.c (2认同)