altairwei / WizNotePlus

A community-driven cross-platform note-taking client.

Home Page:https://altairwei.github.io/WizNotePlus/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

不要使用 QProcess 实例来检测外部编辑器 GUI 程序的状态

altairwei opened this issue · comments

如果使用 QProcess 实例启动外部的 GUI 程序,而不是使用 startDetached() 来启动,并且你想监听 QProcess::finished 信号。对于普通的命令行程序来说,这样做没有任何问题,因为命令行就是这样设计的。但是对于 GUI 程序来说,它们就不会遵循命令行程序的那套约定。比如 Typora 在打开第二个文档时如果检测到之前的 Typora 进程,后一个进程就会直接退出,然后在前一个实例的进程中启动一个新的 GUI 界面。

下图是开启第一个 Typora 的进程树:

image

下图是开启第二个 Typora 的进程树:

image

可以看出,进程树中多了一个 render 进程。而且,多次打开同一个文件并不会启动多个 Typora ,而是定向到同一个。

VSCode 在打开第二个文档时甚至都不开启一个新的 render 进程,而是直接打开一个标签页。 只有 Mousepad 会打开多个进程。