Linux文件锁的使用

话说今天这个事情还比较郁闷,我说怎么文件老锁不住,害得我google了一上午,结果是给文件加锁后立刻把文件关闭了,真是自作孽。

代码如下:

//独占写锁,成功则返回0,失败复数,传入文件描述符
int lockfile(int fd)
{
	struct flock fl;
	fl.l_type = F_WRLCK;
	fl.l_start = 0;
	fl.l_whence = SEEK_SET;
	fl.l_len = 0;
	return (fcntl(fd, F_SETLK, &fl));
}
//写pid文件并加锁,成功返回0,失败则会退出或者返回-2,传参为文件名字符串
int write_pid(char *filename)
{
	int fd;
	char buf[16];
	fd = open(filename, O_RDWR|O_CREAT, S_IWUSR|S_IRUSR|S_IRGRP|S_IROTH);
	if (fd < 0)
	{
		//printf
		exit (-1);
	}
	if (lockfile(fd) < 0 )
	{
		close(fd);
		return -2;
	}
	ftruncate(fd, 0);
	sprintf(buf, "%d", (int)getpid());
	write(fd, buf, strlen(buf)+1);
	//close(fd); 该死的我怎么会在这里close()
	return 0;
}

 

晚上听了下zoom.quiet大妈的python讲座,主要讲python都可以用来干什么,有点跃跃欲试了。

回来后给小妹写了个MASM语法的冒泡排序,其实都是抄人家的,顺便安装了自己08年包装的一个汇编开发环境,链接的时候居然还出现入口点错误,默认是mainCRTstart,非要我指定到main函数上去,微软真是的,包装的人头大。

明天周六调休,继续上班,加油啦!

This entry was posted in 未分类. Bookmark the permalink.

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注