使用C程序在外部打开文件

时间:2012-12-26 04:50:19

标签: c gedit

我想创建一个程序,使正在运行的gedit进程使用C在新选项卡中打开.txt文件。该文件将是我提供给程序的参数。但是,我想完全避免使用system()

我在Linux上。这可能吗?如果是这样,通过什么方式?

3 个答案:

答案 0 :(得分:1)

执行此操作的标准方法是不将编辑器的可执行文件名硬编码到应用程序中。用户可能根本没有安装gedit(只有在系统运行Gnome时才会安装gedit。)而是使用xdg-open将要打开的文件作为参数。例如:

system("xdg-open myfile.txt");

如果用户使用gedit作为默认编辑器,如果gedit已在运行,则会在新选项卡中打开该文件。如果它没有运行,它将首先启动。

答案 1 :(得分:1)

您不需要system()。你可以使用fork / execlp

if(!fork())
    execlp("gedit", "gedit", filename, NULL);

如果已有正在运行的实例,我的笔记本电脑上的gedit版本默认使用新标签,但我不确定其他版本。

答案 2 :(得分:0)

这是一个可能的解决方案:

步骤1.修改gedit源文件(功能:is_in_viewport()以返回TRUE)     (见this link)。

步骤2.在程序中使用fork() / execl()并调用此修改过的gedit(有几个例子)     here)。