Loading output of System (char* command) to variable, c++

馋奶兔 提交于 2021-02-08 12:01:19

问题


...Am trying to load/capture the output of system(char* command) function to a variable, a vector. can i have any possible way to push the output to my vector? I don*t want to write the output to file and read it again. Sample code:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fstream>
#include <iostream>
#include <string>
#include <cstring>
#include <sstream>
#include <vector>


using namespace std;

int main()
{
    vector <string> dir;
    system("pwd");//here i used this to print the current directory, and i want to store this out put to my vector. something like...(below )
    output=output of system("pwd");//this is not a real code,just to notice i want to put the out put to other var and push.
    dir.push_back(output);
return 0;
}

Can i have any scenario to do this task, thanks.


回答1:


I'd recommend doing it like this:

FILE *fp = popen("fortune","r");
char line[200];
while(!feof(fp)) {
fgets(line,200,fp);
// process here
}
pclose(fp);

If it's really performance critical it's probably better to create a child process using fork() and pipes for stdin/stdout of that child process to write or read from. An example of this could be found here (http://www.microhowto.info/howto/capture_the_output_of_a_child_process_in_c.html#idp21888) if you're intested. But the popen method is probably the most simple and straightforward one in your case.



来源:https://stackoverflow.com/questions/35219017/loading-output-of-system-char-command-to-variable-c

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!