【问题标题】:Unable to open file C无法打开文件 C
【发布时间】:2013-04-25 19:43:09
【问题描述】:

对于下面的 sn-p 代码,我得到一个错误:

Unable to open file: No such file or directory

redirect_ptr 是字符** 我试过打印redirect_ptr[0],它打印正确。知道问题可能出在哪里吗?

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

【问题讨论】:

  • 你真的有你想打开的文件吗?...
  • 是的,无论如何都应该创建它
  • 添加文件名的调试打印

标签: c file-io file-descriptor


【解决方案1】:

创建文件时,open() 需要一个附加参数,即要创建的文件的权限位。 你需要做例如

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

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

可能您的文件名中有一些不可打印的字符,或者名称以空格或换行符或类似名称结尾,或者您的名称拼写错误,或者大小写错误,或者路径是相对路径'不匹配基于你进程当前工作目录的文件。

在一对 '' 中打印文件名通常很有帮助,因此您可以查看是否有一些不应该存在的空格。添加一个

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

到您的代码。如果它看起来不错,对它打印出来的文件名执行 ls -l ,位于进程的工作目录中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-06
    • 1970-01-01
    • 2014-06-21
    • 1970-01-01
    相关资源
    最近更新 更多