def open_files(self, mode, create=True):
"""Open files according to given mode, the file descriptors are saved
internally to be used with write_files(), read_files() and
close_files(). The number of files to open is controlled by
the command line option '--nfiles'.
The mode could be either 'r' or 'w' for opening files for reading
or writing respectively. The open flags for mode 'r' is O_RDONLY
while for mode 'w' is O_WRONLY|O_CREAT|O_SYNC. The O_SYNC is used
to avoid the client buffering the written data.
"""
for i in range(self.nfiles):
if mode[0] == 'r':
file = self.abspath(self.files[i])
self.dprint('DBG3', "Open file for reading: %s" % file)
fd = os.open(file, os.O_RDONLY)
self.rfds.append(fd)
self.lock_type = fcntl.F_RDLCK
elif mode[0] == 'w':
if create:
self.get_filename()
file = self.absfile
else:
file = self.abspath(self.files[i])
self.dprint('DBG3', "Open file for writing: %s" % file)
# Open file with O_SYNC to avoid client buffering the write requests
fd = os.open(file, os.O_WRONLY|os.O_CREAT|os.O_SYNC)
self.wfds.append(fd)
self.lock_type = fcntl.F_WRLCK
评论列表
文章目录