由子进程打印到stdout的行

时间:2013-12-24 17:07:35

标签: c process operating-system child-process

如何知道C中子进程打印的行数。 更好地解释场景, 我有一个c程序,我将在其中分叉一个进程。所以我想知道子进程打印到stdout的行数。

2 个答案:

答案 0 :(得分:0)

如果ss是包含12的文件,则可以覆盖stdin:

#include <stdio.h>

int main(int argc, char const *argv[])
{
    printf("%p\n", stdin);
    FILE * fd = fopen("ss", "r+");
    printf("%p\n", fd);
    stdin = fd;
    printf("%p\n", stdin);
    int a = 0;
    scanf("%d", &a);
    printf("%d\n", a);
    return 0;
}

输出:

➜ ./a
0x7fff70ab9350
0x7fff70abf280
0x7fff70abf280
12

答案 1 :(得分:0)

  抓住孩子的Stdout?我怎样才能做到这一点 。你会更有特色吗?

#include <stdio.h>
main()
{
    FILE *fp = popen("ls -1", "r");
    int c, l = 0;
    do if (c = fgetc(fp), c == '\n') ++l; while (c != EOF);
    fclose(fp);
    printf("The child process printed %d lines.\n", l);
}