C中的重定向运算符无法正常工作

时间:2016-01-19 19:04:31

标签: c linux

我正在做这个C程序,它就像一个终端,我已经实现了" dir"命令,但我也想实现重定向">"运算符,所以我可以将所有内容重定向到文件。我制作了一个等待输入的C程序,我希望将该输入发送到.txt文件。

这是output.c,它等待用户输入。

#include <stdio.h>
#define SIZE 500

int main(int argc, char *argv[]){

char text[SIZE];

scanf("%s", text);

return 0;

}

这是应该将我的输入重定向到我的文件的代码。 UPDATE:

int rv;
pid_t pid;
int commpipe[2];

if(argc > 2){

    char filename[] = "output.txt";
    int old_prn_han, new_prn_han;

    old_prn_han = dup(fileno(stdout));
    strcpy(filename, argv[2]);

    if((new_prn_han = open(filename, O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR)) == -1){
        fprintf(stderr, "Unable to create/open file '%s'\n", filename);
        return 1;
    }

    dup2(new_prn_han, fileno(stdout));

    if((pid=fork()) == -1){
        fprintf(stderr, "Error forking new process!\n");
        exit(2);
    }

    if(pid){
        //Parent process
        close(commpipe[0]);
        setvbuf(stdout,(char*)NULL,_IONBF,0);
        sleep(2);
        wait(&rv);
        fprintf(stderr, "Child exited with a %d value\n", rv);
    }else{
    //Child process
        dup2(commpipe[0],0);
        close(commpipe[1]);

        if(execl("output", "output", NULL) == -1){
            fprintf(stderr, "Error executing new process!\n");
            exit(3);
        }
    } 


    close(fileno(stdout));
    dup2(old_prn_han, fileno(stdout));

}

问题是,似乎我的输出程序等待用户输入不执行。你能帮助我吗?

UPDATE 我已经更新了我的代码。现在新的流程正在执行,但是当我输入类似名称&#39;在stdin,我的文件包含一些奇怪的符号,直到我退出主程序才出现。那是为什么?

0 个答案:

没有答案