Мне нужно запустить RNAeval (исполняемый файл) из кода C++ и прочитать вывод RNAeval
. Я нашел код, который может запускать команду и читать результат.Запустить программу из источника C++, которая требует нескольких входных данных
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
Как я могу сделать это из C++?
система:
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;
}
Вы можете сделать это с помощью команды echo "command \ ncommand2" | как ваш параметр, если вы используете * nix-системы. – Lefsler
Это не работает (input1 \ input2). Это не аргумент командной строки. – shantanu