Boost logo

Boost Users :

Subject: [Boost-users] Using boost interprocess file_lock.timed_lock
From: Bill Moo (cppsysdev_at_[hidden])
Date: 2011-07-25 12:41:38


Hello List,

Could someone please give me a working example of how to use this please. I
am obviously doing something wrong as depending on how much I write to the
std::ofstream I either end up with a proper file or a file containing a
single byte!

I would really appreciate your assistance with this as it's driving me to
distraction.

Here is the approach I am taking.

std::ofstream os ;
os.open(m_FileName.c_str(), std::ios_base::out | std::ios_base::binary |
std::ios_base::app) ;
try
{
 if (os.is_open())
 {
  os.setf(std::ios::fixed, std::ios::floatfield) ;
  os.precision(3) ;
  if (fileLock.timed_lock(pt += pt::seconds(5)))
  {
   try
   {
    for (int o = 0; o < 48; o++)
    {
     os << "Write my data here....." ;
     for (int i = 0; i < 51)
     {
      os << i ; // But if I output this simple line and I get a 1 byte file
and NO errors or exceptions!
     }
    }
    fileLock.unlock() ;
   }
   catch (std::ofstream::failure e)
   {
    qDebug() << e.what() ;
   }
  }
  else
  {
   qDebug() << "No lock on file!" ;
  }
 }
 else
 {
  qDebug() << "File not opened!" ;
 }
}
catch (ip::interprocess_exception& e)
{
 qDebug() << e.what() ;
}
catch (std::exception& e)
{
 qDebug() << e.what() ;
}
os.close();

-- 
Bill


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net