/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
答案 0 :(得分:3)
/bin/mkdir
而不是/usr/bin/mkdir
。我知道这不仅是因为你说/usr/bin/mkdir
失败了,不仅因为我看了我的(Mac OS X)系统,还因为这些低级基础程序经常在/bin
因为它们是system(mkdir)
需要启动系统等。
顺便说一句,你不应该使用{{1}}从Perl创建目录。我确信有很多方法可以更“原生”地进行,并且可以更好地进行错误检查。