【发布时间】:2022-01-10 18:22:18
【问题描述】:
我在使用 GtkSubprocess 时遇到了一些问题,我发现它与使用线程有关,有没有办法让它不受并发问题的影响?
我有这个程序对文件执行一些操作,这些操作分别由 GtkListBoxRows 表示。当 GSubprocess 完成并且我尝试删除列表框行时,程序会出现段错误。顺便说一句,每个文件都有自己的进程,所以如果用户加载 10 个文件,就会有 10 个线程(这是由 GThreadPool 管理的)。有趣的是,如果我注释掉启动进程的代码,以及阻塞线程函数直到进程完成的代码,程序不会出现段错误。所以我推断GSubprocess 存在并发问题。产生的误差变化很大,所以这一定是由于时间相关的问题。
我想使用GSubprocess,因为它相对容易获得我需要的命令输出。我是否需要将 GSubprocess 调用移到线程函数之外?
【问题讨论】:
-
您链接的问题从未提及 GSubprocess,仅提及 Python 特定的
subprocess模块(不基于 Gtk gsubprocess)。
标签: c concurrency segmentation-fault subprocess gtk