C语言 由子进程打印到标准输出的行



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

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

#include <stdio.h>
int main(int argc, char const *argv[])
{
    printf("%pn", stdin);
    FILE * fd = fopen("ss", "r+");
    printf("%pn", fd);
    stdin = fd;
    printf("%pn", stdin);
    int a = 0;
    scanf("%d", &a);
    printf("%dn", a);
    return 0;
}

输出:

➜ ./a
0x7fff70ab9350
0x7fff70abf280
0x7fff70abf280
12

捕捉孩子的标准?我该怎么做.你能更具体一点吗?

#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);
}

最新更新