在其中执行命令时在管道中编写奇怪的字符

时间:2016-11-02 16:24:21

标签: c shell pipe piping

所以我的标题可能没有意义,但这是我的问题:

我正在写一个shell,当然我必须处理管道。它们工作,多管道是好的,没有溢出,但有一个问题,当我在管道的写入极端执行命令时,它总是在其中写出奇怪的字符,我只能在看到它时看到它“cat -e”。

这是我输入的命令行:

$> ls | cat -e

这是输出:

^[[?12l^[[?25h42sh$
42sh.dSYM$
Makefile$
auteur$
include$
libft$
src$

这是没有选项-e:

的输出
42sh$
42sh.dSYM$
Makefile$
auteur$
include$
libft$
src$

任何人都知道可能来自哪里?

由于

编辑:这是我管道的功能:

static void     launch_process(t_shell *sh, t_job *job)
{
    t_process   *process;
    int         iofile[2];
    int         pipefd[2];
    int         i;

    process = job->process;
    iofile[0] = 0;
    i = get_num_process(job->process);
    while (job->process)
    {
        if (job->process->next)
        {
            pipe(pipefd);
            iofile[1] = pipefd[1];
        }
        else
            iofile[1] = 1;
        exec_process(sh, job, iofile);
        iofile[0] = pipefd[0];
        job->process = job->process->next;
    }
    job->process = process;
    wait_for_job(job, i);
}

所以基本上,我有我的进程列表,在这种情况下是ls和cat,我在另一个之后执行。

0 个答案:

没有答案