Pregunta

Así que tengo algunos datos temporales en mi programa (en la RAM). Quiero hacer de alguna manera que parezca que se trata de un archivo (por ejemplo, para enviarlo en otro programa que tiene un enlace de archivos como argumento)?

¿Es posible?

¿Cómo hacer tal cosa?

¿Fue útil?

Solución

Puede hacerlo en C usando la función popen():

FILE *f = popen("program args", "w");
// write your output to f here using stdio
pclose(f);

Esto es posible si su programa externo lee su entrada de stdin.

Otros consejos

¿Por qué no simplemente escribir el archivo en el disco? Si escribir en el disco es demasiado lento, puede pasar a la bandera FILE_ATTRIBUTE_TEMPORARY CreateFile para mantener los datos en la memoria caché (y evitar escribirla en el dispositivo físico).

A veces las soluciones obvias son la mejor ...

Si es compatible con su sistema operativo (sistemas de Windows Unixoid y lo hacen), usted podría tratar de usar archivos mapeados en memoria .

Se puede utilizar tubería ()

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.)

Sí, es posible. Usted puede transferir sus datos a su aplicación a través de otro mecanismo de un de comunicación entre procesos :

  1. En función de su sistema operativo, tiene diferentes opciones aquí. Se puede crear un tubo, como otros críticos han mencionado aquí, ya que muchos sistemas operativos tienen tuberías.
  2. También es posible usar la memoria compartida.
  3. Usted simplemente podría escribirlo en un archivo, y luego abrir ese archivo en la otra aplicación.
  4. Muchos sistemas operativos tienen otras técnicas que puede utilizar.

EDIT: listas de MSDN todos los mecanismos IPC disponibles para Windows aquí .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top