7

所以我的程序中有一些临时数据(在 RAM 中)。我想以某种方式使它看起来像一个文件(例如,将其发送到另一个以文件链接作为参数的程序中)?

是否可以?

怎么做这样的事情?

4

5 回答 5

17

为什么不简单地将文件写入磁盘?如果写入磁盘太慢,您可以将FILE_ATTRIBUTE_TEMPORARY标志传递给CreateFile以将数据保留在缓存中(并避免将其写入物理设备)。

有时,显而易见的解决方案是最好的……

于 2010-05-30T23:23:00.737 回答
11

如果您的操作系统支持(Unixoid 系统和 Windows 支持),您可以尝试使用内存映射文件

于 2010-05-30T23:04:00.697 回答
1

您可以使用以下popen()函数在 C 中执行此操作:

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

如果您的外部程序从stdin.

于 2010-05-30T23:03:14.020 回答
0

你可以使用 pipe()

pipe() 函数应创建一个管道并放置两个文件描述符,
参数 fildes[0] 和 fildes[1] 各有一个,它们指的是
管道读写端的打开文件描述。他们的
整数值应是两个最低可用的时间
管道()调用。O_NONBLOCK 和 FD_CLOEXEC 标志在两者上都应清除
文件描述符。(fcntl() 函数可用于设置这两个
标志。)
于 2010-05-30T23:02:40.370 回答
0

是的,有可能。您可以通过进程间通信机制将数据传输到其他应用程序:

  1. 根据您的操作系统,您在此处有不同的选择。正如其他海报在这里提到的那样,您可以创建一个管道,因为许多操作系统都有管道。
  2. 您也可以使用共享内存。
  3. 您可以简单地将其写入文件,然后在其他应用程序中打开该文件。
  4. 许多操作系统都有其他可以使用的技术。

编辑:MSDN在此处列出了适用于 Windows 的所有 IPC 机制。

于 2010-05-30T23:03:41.227 回答