Linux “读取文件抛出”;“拒绝许可”;可读文件
我尝试从磁盘读取所有文件,但由于某个特定文件而失败。 当文件是常规文件且可读(在代码中和使用Linux “读取文件抛出”;“拒绝许可”;可读文件,linux,haskell,Linux,Haskell,我尝试从磁盘读取所有文件,但由于某个特定文件而失败。 当文件是常规文件且可读(在代码中和使用stat检查)时,什么会妨碍读取该文件 代码是 module Main import System.Posix.Files main = do putStrLn "tets_maps - trying to read file /proc/1/task/1/maps" let fn = "/proc/1/task/1/maps" :: FilePath
stat
检查)时,什么会妨碍读取该文件
代码是
module Main
import System.Posix.Files
main = do
putStrLn "tets_maps - trying to read file /proc/1/task/1/maps"
let fn = "/proc/1/task/1/maps" :: FilePath
status <- getSymbolicLinkStatus fn
readable <- fileAccess fn True False False
putStrLn "tets_maps - status regularFiel and readable"
putStrLn . show . isRegularFile $ status
putStrLn . show $ readable
res1 :: String <- readFile fn
putStrLn "tets_maps - result"
在文件具有读取权限之前进行测试时,为什么拒绝权限
?我知道文件大小为0(emtpy),我希望返回一个空字符串,但不是错误。
我不考虑什么? 这不是Haskell的问题,而是Linux特有的问题。即使它显示您有阅读权限,它也不允许:
~ $ ls -lh /proc/1/task/1/maps
-r--r--r-- 1 root root 0 May 5 16:56 /proc/1/task/1/maps
~ $ cat /proc/1/task/1/maps
cat: /proc/1/task/1/maps: Permission denied
/proc
中的文件与内核相关,其中有特殊情况。你可以阅读
这不是Haskell的问题,而是Linux特有的问题。即使它显示您有阅读权限,它也不允许:
~ $ ls -lh /proc/1/task/1/maps
-r--r--r-- 1 root root 0 May 5 16:56 /proc/1/task/1/maps
~ $ cat /proc/1/task/1/maps
cat: /proc/1/task/1/maps: Permission denied
/proc
中的文件与内核相关,其中有特殊情况。你可以阅读
获取更多详细信息。非常感谢您的启发。我阅读了您提到的讨论,对解决方案不满意,尤其是因为它没有得到广泛的传播,并且让人们检查自己的代码长达数小时。非常感谢您的启示。我阅读了您提到的讨论,对解决方案并不满意,尤其是因为它没有得到广泛的传播,并且让人们检查自己的代码长达数小时。
~ $ ls -lh /proc/1/task/1/maps
-r--r--r-- 1 root root 0 May 5 16:56 /proc/1/task/1/maps
~ $ cat /proc/1/task/1/maps
cat: /proc/1/task/1/maps: Permission denied