我想创建一个程序,使正在运行的gedit
进程使用 C 在新选项卡中打开.txt
文件。该文件将是我提供给程序的参数。但是,我想system()
完全避免使用。
我在Linux上。这可能吗?如果有,通过什么方式?
执行此操作的标准方法是不要将编辑器的可执行名称硬编码到您的应用程序中。用户可能根本没有安装 gedit(它通常只在系统运行 Gnome 时才安装在那里。)你所做的就是使用xdg-open
你想要打开的文件作为它的参数。例如:
system("xdg-open myfile.txt");
如果用户使用 gedit 作为默认编辑器,如果 gedit 已经在运行,这将在新选项卡中打开文件。如果它没有运行,它将首先启动。
你不需要system()
。您可以使用 fork/execlp
if(!fork())
execlp("gedit", "gedit", filename, NULL);
如果已经有一个正在运行的实例,我笔记本电脑上的 gedit 版本默认使用一个新选项卡,但我不确定其他版本。