Труба ppm изображение для просмотра изображений eog не работает

Я работаю над проектом обработки изображений на C ++. Чтобы отобразить изображения, я хочу использовать средство просмотра изображений ubuntu по умолчанию (eog). У меня есть функции в моем classе Image16, который может читать и писать PPM-файлы. Я знаю эту работу, потому что могу записать их на жесткий диск, а затем открыть их с помощью eog. Однако я не хочу писать изображения на свой жесткий диск, потому что у меня SSD, и каждое изображение составляет около 100 Мб. Я хочу напрямую подключить данные изображения к eog. Однако это порождает ошибку, и я не уверен, почему.

ifstream in("/home/chase/Desktop/moon.ppm"); Image16 img = Image16::read_ppm(in); in.close(); FILE* f = popen("eog /dev/stdin", "w"); img.write_ppm(f, 255); pclose(f); 

введите описание изображения здесь

Мне удалось заставить его работать с дисплеем imagemagick и feh, но мне действительно не нравятся эти программы. Я хочу использовать eog, если это возможно.