考虑到我们有一个名为
如何在C++程序本身中读取
可以获取
some_function
的函数,它将结果打印到stdout
而不是返回结果。改变其定义超出了我们的范围,并且没有其他选择。我们只能从stdout
中读取结果。所以问题来了。如何在C++程序本身中读取
stdout
?可以获取
pid
,我搜索过是否可以获取相同程序的fd
,但是我找不到任何信息。#include <unistd.h>
#include <sys/types.h>
#include <iostream>
void some_function(){
std::cout<<"Hello World";
}
int main(){
int pid = ::getpid();
string s = //What to write here.
cout<<"Printing";
some_function(); //This function prints "Hello World" to screen
cout<<s; //"PrintingHello World"
return 0;
}
如何将管道连接到同一进程,即不创建子进程。
有些人可能会想要创建子进程并在其中调用some_function
,以便能够在父进程中读取其stdout
,但是不行,some_function
依赖于调用它的进程,因此我们想要调用它的正是那个进程,而不是创建子进程。
pipe
和dup2
。 - Ed Heal