linux 文件锁
创建锁文件对于资源的排他访问,例如串口,是相当合适的,但是对于访问大的共享文件就是太好了。假如我们拥有一个由一个程序写入的大文件,但是是由许多不同的程序进行持续更新的。当一个程序正在记录一些在较长的时间内所得到的数据,并且正在为其他的一些程序进行处理时就会出现这样的情况。这些正在处理的程序并不会等待日志程序结束--他们是连续运行的--所以他们需要一些合作的方法从而可以提供对于同一个文件的同时访问。
我们可以通过锁住文件的一个区域来到达这种结果,这样只是文件的某一个区域被锁住,但是其他程序可以访问程序的其他部分。这称之为文件段(file-segment),或是文件区域(file-region)。Linux有两种方法可以做到这一点:使用fcntl系统调用与使用lockf调用。我们会主要了解fcntl接口,因为这是最经常用到的接口。lockf是相对较为简单的,并且在Linux上只是fcntl的替换接口用法。然而,fcntl与lockf锁机制不可以同时工作:他们使用不同的底层实现,所以我们不能混用这两种调用;只使用这一种或是另一种。
我们在第3章介绍了fcntl调用。其定义如下:
#include <fcntl.h>
int fcntl(int fildes, int command, ...);
fcntl在文件描述符上进行操作,并且依据command参数可以执行不同的任务。而我们所感兴趣的有关文件锁的三个:
❑ F_GETLK
❑ F_SETLK
❑ F_SETLKW
当我们使用这些命令时,第三个参数必须是一个指向struct flock的指针,所以实际上的原型形式如下:
int fcntl(int fildes, int command, struct flock *flock_structure);
flock结构是依赖于实现的,但是他至少包含下面的成员:
❑ short l_type;
❑ short l_whence;
❑ off_t l_start;
❑ off_t l_len;
❑ pid_t l_pid;
l_type成员可以是几个值中的一个,这些值通常定义在fcntl.h中。如下表所示:
值 描述
F_RDLCK 共享锁(或读锁)。多个进程可以在文件的相同区域(或重叠)具有一个共享锁。如果任何进程在文件的某一部分具有一个共享锁,其他的进程就不可以在相同的区域获得排他锁。为了获得一个共享锁,文件必须使用读或是读写访问模式打开。
F_UNLCK 解锁;用于清除锁。
F_WRLCK 排他锁(或写锁)。在文件的某一个特定区域只可以有一个进程获得排他锁。一旦有一个进程具有一个这样的锁,其他的进程就不可以在此区域上获得任何锁类型。要获得一个排他锁,文件必须
相关文档:
Service Discovery Protocol(SDP)提供一种能力,让应用程序有方法发现哪种服务可用以及这种服务的特性。
服务发现协议(SDP或Bluetooth SDP)在蓝牙协议栈中对蓝牙环境中的应用程序有特殊的含意,发现哪个服务是可用的和确定这些可用服务的特征。SDP定义了bluetooth client发现可用bluetooth server服务和它们的特征的方法。 ......
进程篇
查看某进程端口号
netstat -anp | grep 80
lsof -i :port
例: 注意":"后,紧跟端口号,没有空格
#lsof -i :443
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
java 2731 root 35u IPv6 7778 TCP *:https (LI ......
每次装系统少不了要安装VMware Tools,现列出安装步骤,就当做个笔记吧:)
mount /dev/cdrom /mnt/cdrom
cd /mnt/cdrom
ls
cd /tmp
rpm -Uhv /mnt/cdrom/VMwareTools--xxxxxxxxx.rpm
vmware-config-tools.pl
就ok了。 ......
1.1 core文件的简单介绍
在一个程序崩溃时,它一般会在指定目录下生成一个core文件。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。
1.2 开启或关闭core文件的生成
用以下命令来阻止系统生成core文件:
ulimit -c 0
也可以修改系统文件来调整core选项
在/etc/profile通常会有这样一句话来禁止产生 ......