You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux C99下向feh管道传PNG不阻塞主进程并复用窗口

问题:通过管道向feh传输PNG图像后无法即时回收进程控制权

我在C99程序中使用libGD库的gdImagePng(gdImagePtr im, FILE* fs)函数,尝试将PNG图像通过管道传输给图像查看器feh,期望显示图像后主进程能立刻恢复控制权,后续还能在同一个feh窗口中显示更多图像。

目前我通过以下方式实现管道通信:

FILE* fs = popen("feh -", "w");

(其中-表示feh从标准输入读取图像),随后调用gdImagePng(im, fs)传输图像。图像能在feh中正常显示,但主进程必须等到feh窗口关闭才能重新获得控制权。

我已经尝试过以下方案,但均无效果:

  • 将管道设置为非阻塞模式
  • 用"wb"模式打开管道
  • 将feh命令改为"feh - &"试图让其后台运行

目前有一个临时解决方案:配置feh自动重载磁盘中变化的图像,通过system()启动feh显示临时文件(如/tmp/tmp.png或/dev/shm/tmp.png),之后重复向该文件写入不同图像。但这个方法运行缓慢且操作繁琐。

补充信息:Stack Overflow相关帖子显示feh的实现可能不支持我所需的功能。


内容的提问来源于stack exchange,提问作者Xerbla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 21:45:17