1

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

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

4

3 回答 3

1

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

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

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

于 2012-12-26T12:11:25.927 回答
1

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

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

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

于 2012-12-27T01:57:45.860 回答
0

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

Step 1. 修改gedit源文件(功能:is_in_viewport()返回TRUE)(见此链接)。

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

于 2012-12-26T05:31:40.523 回答