Perl 如果getcwd()没有访问权限,为什么要退回到cwd()?
模块使用此函数在编译时确定当前工作目录(请参阅源代码): 其中Perl 如果getcwd()没有访问权限,为什么要退回到cwd()?,perl,Perl,模块使用此函数在编译时确定当前工作目录(请参阅源代码): 其中cwd()和getcwd()都是从模块导入的。在哪些情况下,getcwd()会失败,但cwd()仍然有效?(如果有必要的话,我对Linux平台最感兴趣) 另见: 如评论所述,getcwd()如果进程没有足够的权限访问当前目录(及其所有祖先目录),则可能会失败cwd()有可能抛出一个可能的setuid外部pwd命令,并在这种情况下获取目录 更一般地说,getcwd()的行为类似于POSIXgetcwd调用cwd()被记录为更灵活。
cwd()
和getcwd()
都是从模块导入的。在哪些情况下,getcwd()
会失败,但cwd()
仍然有效?(如果有必要的话,我对Linux平台最感兴趣)
另见:
getcwd()
如果进程没有足够的权限访问当前目录(及其所有祖先目录),则可能会失败cwd()
有可能抛出一个可能的setuid外部pwd
命令,并在这种情况下获取目录
更一般地说,getcwd()
的行为类似于POSIXgetcwd
调用<代码>cwd()被记录为更灵活。它们之间的差异在Linux上可能非常小,但是Cwd
和FindBin
模块都打算在Perl支持的所有平台上工作。这些包括Windows、VMS、OSX之前的MacOS、IBMz/OS和大量其他操作系统。在这些方面,命令之间的差异可能非常显著
sub cwd2 {
my $cwd = getcwd();
# getcwd might fail if it hasn't access to the current directory.
# try harder.
defined $cwd or $cwd = cwd();
$cwd;
}