Итак, у меня есть некоторые временные данные в моей программе (в оперативной памяти). Я хочу как-то сделать так, чтобы это выглядело как файл (например, для отправки его в другую программу, которая принимает в качестве аргумента ссылку на файл)?
Возможно ли это?
Как это сделать?
Почему бы просто не записать файл на диск? Если запись на диск выполняется слишком медленно, вы можете передать флаг FILE_ATTRIBUTE_TEMPORARY в CreateFile , чтобы сохранить данные в кэше (и избежать записи на физическое устройство).
FILE_ATTRIBUTE_TEMPORARY
Иногда очевидные решения являются лучшими ...
Если поддерживается вашей операционной системой (Unixoid и Windows), вы можете попытаться использовать сопоставленные с памятью файлы .
Вы можете сделать это в C, используя функцию popen():
popen()
FILE *f = popen("program args", "w"); // write your output to f here using stdio pclose(f);
Это возможно, если ваша внешняя программа считывает свои данные с stdin.
stdin
Да, это возможно. Вы можете передавать свои данные в другое приложение с помощью механизма межпроцессного взаимодействия :
РЕДАКТИРОВАТЬ: MSDN перечисляет все механизмы IPC, доступные для Windows здесь .
Вы можете использовать pipe ()
The pipe() function shall create a pipe and place two file descriptors, one each into the arguments fildes[0] and fildes[1], that refer to the open file descriptions for the read and write ends of the pipe. Their integer values shall be the two lowest available at the time of the pipe() call. The O_NONBLOCK and FD_CLOEXEC flags shall be clear on both file descriptors. (The fcntl() function can be used to set both these flags.)