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");
                ^      ^

char *整数定数の代わりにa を渡しています。をドロップします。次の"ようになります。

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

興味深いことに、トピックから外れている可能性がopenありますが、合格したと思ったに違いありませんO_CREAT | O_EXCL。そのため、ファイルが既に存在していると不平を言いました。


それで、私が書いたものは正しいですか???しかし、コードは何も印刷しない無限の外観になります

この関数は、入力でread(2)はなく を返します。EOF0

于 2013-02-28T18:51:10.473 に答える