Таким образом, у меня есть некоторые временные данные в моей программе (в RAM). Я хочу так или иначе заставить его казаться, поскольку это - файл (например, для отправки его в другую программу, которая берет ссылку файла в качестве аргумента)?
Действительно ли это возможно?
Как сделать такую вещь?
Вы можете сделать это в C, используя функцию popen ()
:
FILE *f = popen("program args", "w");
// write your output to f here using stdio
pclose(f);
Это возможно, если ваша внешняя программа считывает входные данные из stdin
.
Почему бы просто не записать файл на диск? Если запись на диск слишком медленная, вы можете передать флаг FILE_ATTRIBUTE_TEMPORARY
в CreateFile , чтобы сохранить данные в кеше (и избежать их записи на физическое устройство).
Иногда очевидные решения оказываются лучшими ...
Если это поддерживается вашей операционной системой (Unixoid системы и 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.)
Да, это возможно. Вы можете передать свои данные другому приложению через межпроцессный коммуникационный механизм:
EDIT: MSDN перечисляет все механизмы IPC, доступные для Windows здесь.