对于以下代码片段,我收到错误消息:
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;
}
对于以下代码片段,我收到错误消息:
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;
}
创建文件时, open() 需要一个附加参数,即要创建的文件的权限位。你需要做例如
if ((in_fd = open(redirect_ptr[0], O_RDWR | O_CREAT, 0644) == -1)
这可能不是您得到错误的原因,但是如果错误是“没有这样的文件或目录”,那么这正是错误所在,您的程序找不到该文件。
也许您的文件名中有一些不可打印的字符,或者名称以空格或换行符或类似名称结尾,或者您的名称拼写错误,或者大小写错误,或者路径是不匹配的相对路径该文件基于您的进程的当前工作目录。
在一对 '' 中打印文件名通常很有帮助,因此您可以查看是否有一些不应该存在的空格。添加一个
printf("Filename: '%s'\n",redirect_ptr[0]);
到你的代码。如果它看起来不错,对它打印出来的文件名执行 ls -l ,位于进程的工作目录中。