执行shell命令(c)

我这部分代码,指示我的程序(制作屏幕截图)生成一个命令并退出(关闭)它自己。 这可用于在程序中使用键切换到程序,例如生成“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”执行此操作,关闭程序)。

谢谢

作为初始解决方案,您可以尝试添加对system()调用的返回值的检查。

错误时它将为-1,否则您运行的程序的返回状态。 当您使用&获取子进程时,不确定后者的行为方式。 还不确定是否将孩子与父母分开了; 如果没有,孩子将在您退出申请时终止。

正如其他人所建议的那样,请查看fork()exec()调用以正确执行此操作。 您可以使用普通的exec() 您的进程替换为您希望启动的程序; 如果失败了,你仍然在运行,因此在这种情况下你永远不需要设置退出标志。