为什么POSIX函数open()不接受我的路径*变量

时间:2014-09-16 18:00:03

标签: linux posix

   int fd=-1;
   char *filename = "/home/user/POSIXfunctions/testfiles/testfile.txt";
   //Arbitary size for the buffer?? How to optimise.
   //Dynamic allocation is a choice but what is the
   //right way to relate the file size to bufffer size.

   fd=open(filename , O_WRONLY , mode);
   if(-1 == fd)
   {
      perror("Open Failed");
      return 1;
   }

我从另一个用户那里借用了这个代码,试图理解posix函数,但是当我要求它打开我在顶部指定的文件名时,它给了我这个错误。

Open Failed: No such file or directory

为什么这样做?路径是正确的,没有拼错或任何东西。谁知道问题是什么?我希望能够从root一直提供规范。

编辑:拿出一些不必要的变量

2 个答案:

答案 0 :(得分:1)

我复制了你的代码并在我的Linux机器上运行它并且它有效。所以我的猜测是这个文件并不存在。 再次检查此文件是否存在(例如,您说您从路径中省略了实际用户) 关于你的图书馆问题 - 它与图书馆无关。

答案 1 :(得分:0)

我可以想到以下原因导致您的程序无效:

1)文件不存在。如上所述,运行ls -al和你在C程序中给出的绝对路径应该告诉你文件是否存在

2)您无权写入该文件。运行chmod 666 / path / to / file并尝试运行程序。检查权限是否是问题的其他方法是使用sudo来运行程序。