簡體   English   中英

復制“cat”命令的 C 程序出現問題

[英]Problems with C program that replicates `cat` command

我制作了一個 C 程序,該程序可以執行cat命令執行的操作,但我遇到了問題。 現在添加多個文件作為輸入時效果很好。 現在,當我沒有將任何文件作為參數時,它不會顯示在stdin讀取的內容。 我怎樣才能解決這個問題?

#include<stdio.h>
#include<fcntl.h>
#include<stdarg.h>
#include<stdlib.h>
#include    "ourhdr.h"
#define BUFFSIZE    8192
int main(int argc,char *argv[])
{
    int fd;
    int n;
    char* index=argv[0];
    char buf[BUFFSIZE];
    if(argc ==1)
    {
        printf("<sintaxa> fisier1 fisier2....\n");
    }
    else
        while(--argc>0)
        {
            if((fd = open(*++argv,O_RDONLY)) == -1)
            {
                printf("%s: %s: No such file or directory\n",index,*argv);
            }
            else
            {
                while((n=read(fd,buf,BUFFSIZE)) > 0)
                    if(write(STDOUT_FILENO,buf,n) != n)
                    {
                        err_sys("write error");
                    }

                if(n<0)
                {
                    err_sys("read error");
                }
                close(fd);
            }
        }

    return 0;
}

使用來源,盧克 NetBSD cat.c 實現(參見raw_args函數)首先將局部變量初始化為標准輸入。 然后它無條件地進入 argv 循環。 如果*argv是 NULL,局部變量仍然設置,它從標准輸入讀取。 否則它會被每個 argv 元素覆蓋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM