无法打开文件C.

时间:2013-04-25 19:43:09

标签: c file-io file-descriptor

对于以下代码段,我收到错误:

Unable to open file: No such file or directory

redirect_ptr是char ** 我已经尝试打印redirect_ptr [0],它正确打印。知道问题可能在哪里吗?

if ((in_fd = open(redirect_ptr[0], O_RDWR | O_CREAT)) == -1) {
   perror("Unable to open file");
   return -1;
}

1 个答案:

答案 0 :(得分:2)

创建文件时,open()需要一个额外的参数,即要创建的文件的权限位。 你需要这样做。

if ((in_fd = open(redirect_ptr[0], O_RDWR | O_CREAT, 0644) == -1) 

这可能不是你得到的错误的原因,但是如果错误是“没有这样的文件或目录”,那么这正是错误的,你的程序找不到该文件。

也许您在文件名中有一些不可打印的字符,或者名称以空格或换行符或类似名称结尾,或者您拼写错误的名称,或者包含错误的大小写,或者路径是相对路径根据流程的当前工作目录匹配文件。

在一对''中打印文件名通常很有用,所以你可以看到是否有一些不应该存在的空白。添加一个

 printf("Filename: '%s'\n",redirect_ptr[0]);

代码。如果看起来不错,请在打印出来的文件名上执行ls -l,站在进程的工作目录中。