Я создаю плагин, используя 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 использует специальный каталог для ссылки на файлы такого типа или что-то подобное.