unix文件操作

#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;
}*/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值