我想为totem (linux视频应用程序)写lirc插件,这个lirc插件的一个选项是在"totem“和另一个视频应用程序("vlc”或"mplayer")之间切换。
执行lirc命令的部分代码:
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文件配置):
begin
prog = totem
button = MEDIA
config = video
end问题:
如何使lirc插件执行"vlc“或"mplayer”,如果其中之一已安装。
行为:
按遥控器上的MEDIA按钮,如果安装了vlc插件,则执行vlc;否则,如果安装了mplayer插件,则执行mplayer;如果没有安装任何插件,则插件不执行任何操作。
在不知道如何解决它的伪代码中:
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);
}感谢并致以问候
地理位置
发布于 2012-03-18 20:06:10
你不是应该这样说吗:
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。
https://stackoverflow.com/questions/9757459
复制相似问题