#include <stdio.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
int main(int argc,char *argv[])
{
int fd;
int i=1;
for(i=1;i<argc;++i)
{
char temp;
fd=open(argv[i],"O_RDWR");
if (fd==-1)
perror("file:");
while (read(fd,&temp,1)!=EOF)
{
putchar(temp);
}
}
}
我执行./a.out a b
。 a
和b
是我目录中的文件。我收到错误File exists
。
第open(argv[i],"O_RDWR")
行未打开文件。
由于文件存在,它返回-1
。那么我应该如何使用open
系统调用打开文件?
答案 0 :(得分:5)
fd=open(argv[i],"O_RDWR"); ^ ^
您传递的是char *
而不是整数常量。删除"
,它应该只是:
fd = open(argv[i], O_RDWR);
有趣但可能偏离主题,open
一定认为您已通过O_CREAT | O_EXCL
,这就是为什么它抱怨已存在的文件。
那么我所拥有的就是当时的???但是代码正在进入 无限外观打印不亮
函数read(2)
不会返回EOF
输入而是输入0
。