Connecting Tech Pros Worldwide Help | Site Map

portable fmemopen

  #1  
Old November 15th, 2006, 06:55 PM
yancheng.cheok@gmail.com
Guest
 
Posts: n/a
i have a vendor function, which need to take into FILE* as function
arguement.

vendor_function_read_and_process(FILE* f)

however, by reading from disk file during run-time, we get performance
penalty.

hence, instead of having f pointing to a disk file, we would like to
have f mapped to a memory location.

fmemopen is what we are looking for. however, since we are developing
is MSVC windows platform, i was wondering whether there is any portable
library to do so?

thank you.

  #2  
Old November 15th, 2006, 07:15 PM
santosh
Guest
 
Posts: n/a

re: portable fmemopen


yancheng.cheok@gmail.com wrote:
Quote:
i have a vendor function, which need to take into FILE* as function
arguement.
>
vendor_function_read_and_process(FILE* f)
>
however, by reading from disk file during run-time, we get performance
penalty.
Who says that f has to control a disk file? Is it under your control or
not?
Quote:
hence, instead of having f pointing to a disk file, we would like to
have f mapped to a memory location.
f is just a pointer to an object of type FILE. That too, despite it's
name, is probably a simple structure object. f will control a disk
file, only if you make it do so by a call to fopen() or similar. If you
want to map that disk file, whatever it is, to memory then memory
mapped files is the first idea.
Quote:
fmemopen is what we are looking for. however, since we are developing
is MSVC windows platform, i was wondering whether there is any portable
library to do so?
I suspect, memory mapping the file using the native Windows API would
be sufficient unless the requirements are special. Even then you'll not
be able to avoid the overall penalty incurred in reading it ina
piecemeal fashion from the hard disk.

Anyway, standard C has no provisions for what you're seeking. Ask in a
Microsoft newsgroup like comp.os.ms-windows.programming.

  #3  
Old November 15th, 2006, 09:35 PM
Malcolm
Guest
 
Posts: n/a

re: portable fmemopen





<yancheng.cheok@gmail.comwrote in message
news:1163618273.541831.8110@m7g2000cwm.googlegroup s.com...
Quote:
>i have a vendor function, which need to take into FILE* as function
arguement.
>
vendor_function_read_and_process(FILE* f)
>
however, by reading from disk file during run-time, we get performance
penalty.
>
hence, instead of having f pointing to a disk file, we would like to
have f mapped to a memory location.
>
fmemopen is what we are looking for. however, since we are developing
is MSVC windows platform, i was wondering whether there is any portable
library to do so?
>
Sadly, this is a major weakness in the standard. There is no way of creating
memory files or indeed and user-defined type of stream.
--
www.personal.leeds.ac.uk/~bgy1mm
freeware games to download.


  #4  
Old November 15th, 2006, 10:05 PM
Keith Thompson
Guest
 
Posts: n/a

re: portable fmemopen


"Malcolm" <regniztar@btinternet.comwrites:
Quote:
<yancheng.cheok@gmail.comwrote in message
news:1163618273.541831.8110@m7g2000cwm.googlegroup s.com...
[...]
Quote:
Quote:
>fmemopen is what we are looking for. however, since we are developing
>is MSVC windows platform, i was wondering whether there is any portable
>library to do so?
>>
Sadly, this is a major weakness in the standard. There is no way of creating
memory files or indeed and user-defined type of stream.
There's no standard way of specifying that a given file exists in
memory. But then again, there's no standard way of specifying that a
given file exists on disk. The interpretation of a file name is
entirely system-specific.

An implementation could easily specify a particular form of file name
that refers to in-memory files; then all the machinery that normally
deals with disk files should just work. I wonder why more
implementations don't do this.

(Some implementations can implement in-memory file systems, but
there's no good way to tell that a given file is on such a file
system. For example, <OT>"/tmp" might be implemented as swapfs on one
system, as a physical disk on another, and even as a remote
NFS-mounted filesystem on yet another, with all three systems running
the same version of the same operating system.</OT>)

--
Keith Thompson (The_Other_Keith) kst-u@mib.org <http://www.ghoti.net/~kst>
San Diego Supercomputer Center <* <http://users.sdsc.edu/~kst>
We must do something. This is something. Therefore, we must do this.
Closed Thread


Similar Threads
Thread Thread Starter Forum Replies Last Post
portable fmemopen yancheng.cheok@gmail.com answers 3 November 15th, 2006 10:05 PM
Open a file from memory? DigitalDragon answers 6 April 20th, 2006 09:50 PM
fmemopen: portable version? Markus Dehmann answers 5 November 14th, 2005 10:51 AM
treat array as a file Jeevan answers 11 November 13th, 2005 06:28 PM