/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制作目录。 我相信有很多方法可以更“原生”地执行,并且具有更好的错误检查功能。