在C中通过unix系统命令打开图像文件

时间:2017-01-24 11:23:45

标签: c unix

我有一个项目,用户可以通过在菜单中选择文件来打开文件。 我有两个几乎相同的代码片段,但有一个有用,而另一个没有: 有效的方法是通过gedit打开文本文件(“chemin”包含文件路径):

char buf[200];
snprintf(buf,sizeof(buf),"gedit %s",chemin);
system(buf);

这个在我的代码 中运行时不起作用,但在外面运行时可以正常工作(用eog打开.jpg文件 - 也试过xdg但没有改进):

snprintf(buf,sizeof(buf),"eog %s",chemin);
system(buf);

有没有更可靠的方法从unix命令行打开.jpg文件?还是我忘记了什么? TIA

更新 似乎缓冲区只将其前7个字符打印到命令行,即: 我的文件路径:./FICHIER_PROJET/basededonnee/basedeDonneefichier/IMG_RGB/21.jpg 命令行打印的内容:eog ./FI 这只适用于这些.jpg文件

2 个答案:

答案 0 :(得分:1)

问题可能来自char' \ 0'有错误的地方,尝试类似的事情:

strncpy(buf, "eog ", 4);
strncat(buf, chemin, sizeof(chemin));
buf[4+sizeof(chemin)] = '\0';
if(system(buf) == -1){
    perror("Error with the system call ");
    exit(-1);
}

答案 1 :(得分:0)

解决了......我一直在为所有系统命令使用一个通用缓冲区。我为这个创建了一个新的缓冲区,它可以工作。