我这部分代码,指示我的程序(制作屏幕截图)生成命令并退出(关闭)本身。这可用于在程序中使用键切换到程序,例如生成“gimp”或用户想要使用的其他图像编辑器。
case SWITCH_TO:
if( arg ) {
char commandline[ 256 ];
snprintf( commandline, sizeof (commandline), "%s &", arg );
system( commandline );
cmd->quit = 1;
}
break;
例如使用:
program-command SWITCH_TO "gimp"
将拥有我的程序调用系统(“gimp&”),退出(关闭)本身并运行gimp。
program-command SWITCH_TO "fotoxx"
将拥有我的程序调用系统(“fotoxx&”),退出(关闭)本身并运行fotoxx。
我希望我的程序检查“命令行”是否有效(在$ PATH中找到的应用程序),如果没有,命令“program-command SWITCH_TO”不运行而不关闭我的程序(“cmd-> quit = 1”这样做,关闭程序)。
由于
答案 0 :(得分:1)
作为初始解决方案,您可以尝试添加system()
来电的返回值检查。
出错时为-1,否则运行程序的返回状态。当您使用&
获取子进程时,不确定后者的行为方式。也不确定是否将孩子与父母隔离开来;如果没有,孩子将在您退出申请时终止。
正如其他人所建议的那样,请调查fork()
和exec()
来正确执行此操作。您可以使用普通的exec()
替换您的流程与您希望启动的程序的流程相同;如果失败了,你仍然在运行,因此在这种情况下你永远不需要设置退出标志。