0
#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系统调用打开文件?

4

1 回答 1

5
fd=open(argv[i],"O_RDWR");
                ^      ^

您传递的是 achar *而不是整数常量。删除",它应该只是:

fd = open(argv[i], O_RDWR);

有趣但可能跑题了,open一定以为你通过了O_CREAT | O_EXCL,这就是它抱怨文件已经存在的原因。


那么我所写的是正确的???但是代码将进入无限的外观,打印什么都没有

该函数read(2)不返回EOFat 和 输入,而是返回0.

于 2013-02-28T18:51:10.473 回答