2013-04-03 11 views
5

In un primo momento delineerò il dominio con la fonte.Boost interprocess allocator - gestire la dimensione del file

Non mi interessa la dimensione finale di un file sottostante, ma non posso prevedere questo valore. C'è qualche meccanismo di boost, che gestirà il ridimensionamento di un file sottostante? O devo prendere bip :: bad_alloc e preoccuparmi di questo da solo?

risposta

6

Leggere questo this section dei documenti.

Hai la funzione statica membro grow() che potrebbe essere quello che ti serve:

bip::managed_mapped_file::grow("./file", extra_bytes); 

Ma bisogna essere sicuri che nessuno utilizza il file, è per questo che lo chiamano off-line in crescita. E ciò potrebbe non essere possibile a seconda del problema.

+0

Oh. Cosi 'semplice. Devo ammettere che stavo bouncando dopo aver risolto problemi simili direttamente su POSIX mmap e usando Boost IOstreams. Vedere per esempio questa risposta [come scambiare una riga con un'altra in C++] (http://stackoverflow.com/a/17374711/85371). Mi chiedo come l'hanno implementato per essere portabile. – sehe