Мне нужно запустить RNAeval (исполняемый файл) из C++ code и прочитайте вывод RNAeval
. Я нашел код, который может запускать команду и читать вывод.
string exec(char* cmd) {
FILE* pipe = popen(cmd, "r");
if (!pipe) return "ERROR";
char buffer[128];
std::string result = "";
while(!feof(pipe)) {
if(fgets(buffer, 128, pipe) != NULL)
result += buffer;
}
pclose(pipe);
return result;
}
Но RNAeval не принимает никаких аргументов командной строки. Вместо этого мне нужно ввести данные после запуска программы (аналогично bc
в Linux).
пример
RNAeval [enter]
input1 [enter]
input2 [enter]
return output by RNAeval and exit
Как я могу сделать это из С++?
Система:
Linux
g++
gcc
Редактировать
string exec(char* cmd) {
FILE* pipe = popen(cmd, "w");
if (!pipe) return "ERROR";
char buffer[128];
std::string result = "";
fprintf(pipe,"%s\n","acgt");
fprintf(pipe,"%s\n","(())");
fprintf(pipe,"%s\n","@");
while(!feof(pipe)) {
if(fgets(buffer, 128, pipe) != NULL)
result += buffer;
}
pclose(pipe);
return result;
}