C++ 通过读取功能而不是fread读取标准输出
我想让我的程序读取另一个应用程序生成的标准输出。我知道我可以使用C++ 通过读取功能而不是fread读取标准输出,c++,c,linux,pipe,C++,C,Linux,Pipe,我想让我的程序读取另一个应用程序生成的标准输出。我知道我可以使用popen来实现这一点,并使用fread来读取该输出 您知道是否可以使用读取(以及可能的打开)?我在LINUX中使用C/C++您可以通过调用int-fd=fileno(fp)来获取read()的文件描述符,该文件描述符来自popen()。但是请注意,不能将调用read()和fread()混用在一起 编辑 如果你想避免使用popen(),你必须使用pipe(),fork(),exec..()和dup2(),就像使用shell那样如何处
popen
来实现这一点,并使用fread
来读取该输出
您知道是否可以使用
读取
(以及可能的打开
)?我在LINUX中使用C/C++您可以通过调用int-fd=fileno(fp)
来获取read()
的文件描述符,该文件描述符来自popen()
。但是请注意,不能将调用read()
和fread()混用在一起
编辑
如果你想避免使用popen()
,你必须使用pipe()
,fork()
,exec..()
和dup2()
,就像使用shell那样如何处理你的shell$/program1 |/program2
,这将连接progam1的stdout和program2的stdin。如果你使用pipe,你不需要打开,只需阅读(pipe[],buffer,len)为什么你不想使用popen
?@Jan…读得更好我的问题,你是对的。使用popen是可以的(也因为我可以给出我想要运行的命令和参数),但我更喜欢使用open而不是fread。很棒的东西!谢谢。