linux-为什么此返回失败?

/ tmp当然存在,但是当目录存在时,mkdir -p不应返回错误.

那么为什么以下操作失败?

system("/usr/bin/mkdir -p /tmp 2> /dev/null") == 0 or print("Failed");        
if ($?) {print("Failed");}

system("/usr/bin/mkdir -p /tmp 2> /dev/null");
if ($?) {print("Failed");}

从Bash我得到预期的0

# mkdir -p /tmp
# echo $?
0

解决方法:

它是/ bin / mkdir而不是/usr/bin/mkdir.我知道这一点,不仅是因为您说/usr/bin/mkdir失败,不仅是因为我查看了我的(Mac OS X)系统,还因为这样的低级基本程序经常在/ bin中,因为它们需要引导系统等

顺便说一句,您不应该使用system(mkdir)从Perl创建目录.我敢肯定,有很多方法可以更“原生”地进行操作,并具有更好的错误检查功能.

上一篇:php,perl和python中的HTTP标头


下一篇:正则表达式贪婪解析方向