执行shell命令(c)

时间:2012-03-20 08:44:54

标签: c shell

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

由于

1 个答案:

答案 0 :(得分:1)

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

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

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