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
相关产品推荐
相关产品推荐

