Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Тестовые примеры / ch7 / regfile
.h #ifndef REGFILE_H /* This is regfile.h header */
#define REGFILE_H
#include "filebase.h"
/* A class to encapsulate POSIX and UNIX regular file objects' properties */
class regfile : public filebase
{
public:
regfile( const char*fnm, int mode, int prot) : filebase(fnm,mode,prot)
{};
~regfile() {};
int lock( int lck_type, off_t len, int cmd=F_SETLK)
{ struct flock flck;
if ((lck_type&ios::in) == ios::in)
flck.l_type = F_RDLCK;
else if ((lck_type & ios::out)==ios::out)
flck.l_type = F_WRLCK;
else return -1;
flck.l_whence = SEEK_CUR;
flck.l_start = (off_t)0;
flck.l_len = len;
return fcntl(fileno(),cmd,&flck);
};
int lockw( int lck_type, off_t len) { return lock( lck_type, len, F_SETLKW); };
int unlock( off_t len) { struct flock flck;
flck.l_type = F_UNLCK;
flck.l_whence = SEEK_CUR;
flck.l_start = (off_t)0;
flck.l_len = len;
return fcntl(fileno(),F_SETLK,&flck);
};
int getlock( int lck_type, off_t len, struct flock& flck)
{ if ((lck_type&ios::in) == ios::in)
flck.l_type = F_RDLCK;
else if ((lck_type & ios::out)==ios::out)
flck.l_type = F_WRLCK;
else return -1;
flck.l_whence = SEEK_CUR;
flck.l_start = (off_t)0;
flck.l_len = len;
return fcntl(fileno(),F_GETLK,&flck);
};
};
#endif /* regfile.h */
Соседние файлы в папке ch7