对于下面的代码片段,我得到一个错误:
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命令,位于进程的工作目录下。