Захват результата из функции в C (cmd1 | cmd2) - PullRequest
1 голос
/ 03 марта 2011

Допустим, что cmd1 что-то печатает на stdout. Как я могу захватить это с cmd1 в C, что cmd1 | cmd2 работает.

* 1003 т.е. *

cmd1{
    fprintf(stdout, "Hello");
    }

cmd2 : should take "hello" and only print "hel".

Ответы [ 2 ]

2 голосов
/ 03 марта 2011

Чтобы включить работу конвейера, cmd2 должен читать из stdin.

Например, поскольку fgets() читает из stdin, вы можете сделать что-то вроде:

#include <stdio.h>

int main() {
    char buf[1024];
    while (fgets(buf, sizeof(buf), stdin)) {
        printf("%.*s\n", 3, buf);
    }
    return 0;
}
0 голосов
/ 03 марта 2011

То, как stdout взаимодействует с другой программой, не имеет ничего общего с C - это операционная система. Тем не менее, в каждой ОС я использовал набор

 cmd1 | cmd2

Отправит стандартный вывод cmd1 на стандартный ввод cmd2.

Если это не работает, возможно, вам нужно очистить буфер в вашей программе cmd1. (Это зависит от многих вещей ... но попробуйте.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...