#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <signal.h>
#include "file.h"
#include <stdio.h>
int createAccountFile(char* path){
int fd = open(path,O_TRUNC|O_RDWR|O_CREAT,0666);
close(fd);
return fd;
}
int deleteAccountFile(char* path){
return unlink(path);
}
int writeAccountFile(char* path,void* data,int size){
int fd = open(path,O_APPEND|O_RDWR|O_CREAT,0666);
writew_lock(fd); //上写锁
//屏蔽所有信号
sigset_t set;
sigemptyset(&set);
sigfillset(&set);
sigset_t oldset;
sigprocmask(SIG_BLOCK,&set,&oldset);
sleep(3);
int result = write(fd,data,size);
unlock(fd);
close(fd);
sigprocmask(SIG_SETMASK,&oldset,NULL); //信号接触屏蔽
return result;
}
int readAccountFile(char* path,void* data,int size){
int fd =open("bbb.dat",O_RDONLY);
readw_lock(fd);
int result = read(fd,data,size);
unlock(fd);
close(fd);
return result;
}
void lock_init(struct flock *lock,short type,short whence,off_t start,off_t len){
if(lock == NULL)
return;
lock->l_type=type;
lock->l_whence = whence;
lock->l_start=start;
lock->l_len=len;
}
int readw_lock(int fd){
if(fd<0)
return -1;
struct flock lock;
lock_init(&lock,F_RDLCK,SEEK_SET,0,0);
if(fcntl(fd,F_SETLKW,&lock)!=0)
return -1;
return 0;
}
int writew_lock(int fd){
if(fd<0)
return -1;
struct flock lock;
lock_init(&lock,F_WRLCK,SEEK_SET,0,0);
if(fcntl(fd,F_SETLKW,&lock)!=0)
return -1;
return 0;
}
int unlock(int fd){
if(fd<0)
return -1;
struct flock lock;
lock_init(&lock,F_UNLCK,SEEK_SET,0,0);
if(fcntl(fd,F_SETLKW,&lock)!=0)
return -1;
return 0;
}
/*
int main(){
char *path="aaa";
createAccountFile(path);
char *data = "123456";
writeAccountFile(path,data,7);
return 0;
}
*/
#include "trim.h"
#include <stdio.h>
#include <string.h>
void trim(char* str){
ltrim(str);
rtrim(str);
}
void ltrim(char* str){
char* p;
p=str;
int i=0;
while(*p==' '&*p!='\0'){
p++;
i++;
}
strcpy(str,p);
}
void rtrim(char* str){
int len = strlen(str);
int i=len-1;
while(str[i]==' '&& i>=0){
str[i]='\0';
i--;
}
}
/*
int main(){
char ss[]=" ";
printf("%d\n",strlen(ss));
trim(ss);
printf("%d\n",strlen(ss));
printf("%s\n",ss);
return 0;
}*/