如何知道C中子进程打印的行数。 更好地解释场景, 我有一个c程序,我将在其中分叉一个进程。所以我想知道子进程打印到stdout的行数。
答案 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);
}