如果我使用printf ("Hello!");
有什么方法可以读取我输入到stdout的内容吗?是否可以从stdout读取?
我看到C language. Read from stdout(它使用管),但它不工作:
#define _XOPEN_SOURCE
#include <stdio.h>
#include <unistd.h>
#define DIM 10
int main(void)
{
char s[DIM];
int fds[2];
pipe(fds);
dup2(fds[1], fileno(stdout)); //I added fileno()
printf("Hello world!");
read(fds[0], s, DIM);
printf("\n%s",s);
return 0;
}
我也使用文件描述符尝试,但没有它不工作:
#define _XOPEN_SOURCE
#include <stdio.h>
#include <unistd.h>
#define DIM 10
#define MYFILE "/path/file"
int main(void)
{
FILE *fd;
char s[DIM];
fd = fopen(MYFILE,"w+");
dup2(STDOUT_FILENO, fileno(fd));
printf("Hello world!");
fseek(fd, 0, SEEK_SET);
fgets(s, DIM, fd);
printf("\n%s",s);
return 0;
}
哪有我做?
时,在第一个代码,重定向是活动的,所以任何*打印*会去管,你什么也看不见。在示例2中,重定向是反向进行的(将参数更改为dup2调用)。无论如何,从stdout读取是一个无意义的,标准输出是一个out stream;并且读取您写入stdout的内容不能通过单个进程以此方式进行。但更一般地说,你想要的是*奇怪*,你为什么要这样? –