1

C で低レベル関数を使用しようとしていて、STDIN から読み取り、その情報をファイルに保存したいと考えています。

int dash, c;
char buffer[1024];
if((dash = creat("file.txt", S_IRWXU)) < 0)
    perror("creat error");
while ((c = read(STDIN_FILENO, buffer, sizeof(buffer))) > 0) {
    if (write(dash, buffer, c) != c)
       perror("write error");

「file.txt」にアクセスして読み取り、画面に印刷するか、別のファイルに保存する方法を理解するのに問題があります。'read("file.txt", buffer, sizeof[buffer])' を使用しますか?

編集 「file.txt」を作成した後、別のファイルを開きたいとします。file1(argv [3])と言って、「file.txt」をfile1(agrv [3])にダンプします。これは機能しますか?

fd = open(argv[3], O_RDWR); //open 3rd arg for writing
fd_2 = open("file.txt", O_RDWR); //open created file
do {
     n = read(fd_2, buffer, sizeof(buffer));
     if (n < 0)
        perror("read error argv[2]"); //greater 0=succesful
     write(STDOUT_FILENO, buffer, n); // this is where I'm stuck
    } while (n == sizeof(buffer));
close(fd);

両方のファイルを開いていますが、「file.txt」を argv[3] に書き込む方法がわかりません。

4

2 に答える 2

3

open()ファイル記述子を取得するために使用します。

int fd = open("file.txt", O_RDWR);

次に、 を使用read()して、このファイル記述子から読み取ることができますSTDIN_FILENO

c = read(fd, buffer, sizeof(buffer));

実際のコードで両方の関数の戻り値を確認してください。

于 2013-10-30T05:05:31.613 に答える