猿问

C:运行系统命令并获取输出?

C:运行系统命令并获取输出?

我想在linux中运行一个命令,并返回它输出的文本,但我希望这个文本打印到屏幕上。有没有比制作临时文件更优雅的方式?



扬帆大鱼
浏览 845回答 3
3回答

jeck猫

你想要“&nbsp;popen&nbsp;”功能。这是运行命令“ls / etc”并输出到控制台的示例。#include&nbsp;<stdio.h>#include&nbsp;<stdlib.h>int&nbsp;main(&nbsp;int&nbsp;argc,&nbsp;char&nbsp;*argv[]&nbsp;){ &nbsp;&nbsp;FILE&nbsp;*fp; &nbsp;&nbsp;char&nbsp;path[1035]; &nbsp;&nbsp;/*&nbsp;Open&nbsp;the&nbsp;command&nbsp;for&nbsp;reading.&nbsp;*/ &nbsp;&nbsp;fp&nbsp;=&nbsp;popen("/bin/ls&nbsp;/etc/",&nbsp;"r"); &nbsp;&nbsp;if&nbsp;(fp&nbsp;==&nbsp;NULL)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;printf("Failed&nbsp;to&nbsp;run&nbsp;command\n"&nbsp;); &nbsp;&nbsp;&nbsp;&nbsp;exit(1); &nbsp;&nbsp;} &nbsp;&nbsp;/*&nbsp;Read&nbsp;the&nbsp;output&nbsp;a&nbsp;line&nbsp;at&nbsp;a&nbsp;time&nbsp;-&nbsp;output&nbsp;it.&nbsp;*/ &nbsp;&nbsp;while&nbsp;(fgets(path,&nbsp;sizeof(path)-1,&nbsp;fp)&nbsp;!=&nbsp;NULL)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;printf("%s",&nbsp;path); &nbsp;&nbsp;} &nbsp;&nbsp;/*&nbsp;close&nbsp;*/ &nbsp;&nbsp;pclose(fp); &nbsp;&nbsp;return&nbsp;0;}

千巷猫影

您需要某种进程间通信。使用管道或共享缓冲区。

富国沪深

通常,如果该命令是外部程序,您可以使用操作系统来帮助您。command&nbsp;>&nbsp;file_output.txt所以你的C代码会做类似的事情exec("command&nbsp;>&nbsp;file_output.txt");然后,您可以使用file_output.txt文件。
随时随地看视频慕课网APP
我要回答