Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux “读取文件抛出”;“拒绝许可”;可读文件_Linux_Haskell - Fatal编程技术网

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