我正在使用 Firebreath 构建一个插件。我在ABCPluginAPI.cpp
called中创建了一个个人方法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 使用一个特殊的目录来引用这种文件或类似的东西。