Я создаю плагин, используя Firebreath. Я создал личный метод в ABCPluginAPI.cpp
под названием exe_program()
, и я хотел бы вызвать другую программу с помощью popen под названием my_program
. Все файлы находятся в firebreath/projects/ABCPlugin/.
Мой метод:
string ABCPluginAPI::exe_program()
{
FILE * pPipe;
fd_set readfd;
char buff[1024];
char command[128];
int ret;
strcpy(command, "my_program");
if (!(pPipe = popen(command, "r"))) {
// Problem to execute the command
return "failed";
}
while(fgets(buff, sizeof(buff), pPipe)!=NULL){
cout << buff;
return buff;
}
}
У меня проблема в том, что плагин не работает my_program
, на самом деле, если я выполняю команду pwd
, он показывает мой каталог $ HOME. pwd
работает, потому что это общая команда, но я не хочу помещать свою программу в переменную $PATH, потому что этот плагин должен быть переносимым.
Вероятно, Firebreath использует специальный каталог для ссылок на такие файлы или что-то подобное.