首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅当安装了应用程序时才生成进程(c)

仅当安装了应用程序时才生成进程(c)
EN

Stack Overflow用户
提问于 2012-03-18 18:07:02
回答 1查看 892关注 0票数 1

我想为totem (linux视频应用程序)写lirc插件,这个lirc插件的一个选项是在"totem“和另一个视频应用程序("vlc”或"mplayer")之间切换。

执行lirc命令的部分代码:

代码语言:javascript
复制
if (strcasecmp (cmd, "video") == 0)
    {
            gchar **argv;
            exit_totem();
            g_shell_parse_argv ("vlc", NULL, &argv, NULL);
            g_spawn_async (NULL, argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, NULL);
            g_strfreev (argv);
    }

对于这个命令,我只想分配一个值"video“(示例lircrc文件配置):

代码语言:javascript
复制
begin
    prog = totem
    button = MEDIA
    config = video
end

问题:

如何使lirc插件执行"vlc“或"mplayer”,如果其中之一已安装。

行为:

按遥控器上的MEDIA按钮,如果安装了vlc插件,则执行vlc;否则,如果安装了mplayer插件,则执行mplayer;如果没有安装任何插件,则插件不执行任何操作。

在不知道如何解决它的伪代码中:

代码语言:javascript
复制
if (strcasecmp (cmd, "video") == 0)
    {

     if (vlc installed)
     ------------------
        gchar **argv;
        exit_totem();
        g_shell_parse_argv ("vlc", NULL, &argv, NULL);
        g_spawn_async (NULL, argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, NULL);
        g_strfreev (argv);

     else (mplayer installed)
     ------------------------
        gchar **argv;
        exit_totem();
        g_shell_parse_argv ("mplayer", NULL, &argv, NULL);
        g_spawn_async (NULL, argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL, NULL);
        g_strfreev (argv);           
}

感谢并致以问候

地理位置

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-18 20:06:10

你不是应该这样说吗:

代码语言:javascript
复制
 gchar **output;
 g_spawn_command_line_sync("which vlc",output,NULL,NULL,NULL); 
 if (!g_str_has_suffix (&output,"which no"))
 {
 // call vlc goes here
 }
 gchar **output2;
 g_spawn_command_line_sync("which mplayer",output2,NULL,NULL,NULL); 
 if (!g_str_has_suffix (&output2,"which no"))
 {
 // call mplayer goes here
 }
 g_strfreev (output); 
 g_strfreev (output2); 

有关使用IO通道而不仅仅是g_str_has_suffix读取输出的更详细示例,请参见Spawning processes using glib

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9757459

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档