如何在C程序中替换char数组中的char

时间:2015-04-20 08:40:10

标签: c arrays shell execvp

我正在用C开发一个shell代码。目前,我的任务是使用不同的命令将stdin重定向到stdout,例如cat< hello.c -ne>的test.txt

我能够做到,但我的代码试图打开“<”和“>”文件也是如此,所以我尝试分配0值,这不会给我任何错误但忽略-ne。

这是我的代码,

int in, out;
int i;
for (i = 0; i < argc; i++) {
    if(strcmp( argv[i],"<")==0) {

        in = open(argv[i+1], O_RDONLY);
        if (!in)
            exit(EXIT_FAILURE);
            //   argv[i]=0;
            // array[i+1]=0;
    }
    else if(strcmp( argv[i],">")==0) {
        out = open(argv[i+1], O_WRONLY | O_TRUNC | O_CREAT, S_IRUSR | S_IRGRP | S_IWGRP | S_IWUSR);
        if (!out)
            exit(EXIT_FAILURE);
            //    argv[i]=0;
            // array[i+1]=0;
    }
}
dup2(in, 0);
dup2(out, 1);
// close unused file descriptors

close(in);
close(out);
char *bname;
char *path2 = strdup(*argv);
bname = basename(path2);        
//printf("%d",argc);            

/*the command will be executed using execvp*/                           
execvp(bname, argv);

argv数组就像

argv[0]="cat"
argv[1]="<"
argv[2]="hello.c"
argv[3]="-ne"
argv[4]=">"
argv[5]="test.txt"

基本上,我想在“&lt;”之间打开多个文件和“&gt;”然后在“&gt;”之后重定向到给定文件。

当前输出 -

$ ./shell
Enter Shell Command -- cat < hello.c -ne > te1.txt


$ cat: : No such file or directory
cat: : No such file or directory
cat: te1.txt: input file is output file

0 个答案:

没有答案