如果我使用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的內容不能通過單個進程以此方式進行。但更一般地說,你想要的是*奇怪*,你爲什麼要這樣? –