摘要:本文主要讨论文件控制fcntl函数的基本应用.dup函数可以复制文件描述符,而fcntl函数与dup函数有着异曲同工之妙.并且还有更加强大的功能,可以获取或设置已打开文件的性质,操作文件锁....
分类:
其他好文 时间:
2014-09-30 21:18:08
阅读次数:
291
在文已经共享的情况下如何操作,也就是当多个进程同时操作同一个文件时,我们怎么保证文件数据的正确性。linux通常采用的方法是文件上锁,来避免共享资源的产生竞争状态。
文件锁包括建议性锁和强制性的锁。建议性的,顾名思义,相对温柔一些,在对文件进行锁操作时,会检测是否已经有锁存在,并且尊重已有的锁。在一般的情况下,内核和系统都不使用建议锁。强制性的锁是由内...
分类:
其他好文 时间:
2014-09-27 17:10:00
阅读次数:
177
tee函数使用功能描述:tee函数在两个管道文件描述符之间复制数据,也是零拷贝操作.它不消耗数据,因此源文件描述符仍然可以用于后续的操作.函数原型:#include ssize_t tee(int fd_in,int fd_out,size_t len,unsigned int flags);函数....
分类:
其他好文 时间:
2014-09-16 18:49:41
阅读次数:
281
函数lockf()、fcntl()、flock()实现的互斥锁、多写锁的作用域是进程级的,这种锁不能用来保证多线程中数据的安全性和一致性。...
分类:
系统相关 时间:
2014-09-12 17:20:14
阅读次数:
725
importsocketimportfcntlimportstructdefget_ip_address(ifname):s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)returnsocket.inet_ntoa(fcntl.ioctl(s.fileno(),0x8915,#SIOCGIFADDRstruct.pack(‘256s‘,ifname[:15]))[20:24])printget_ip_address(‘eth0‘)
分类:
编程语言 时间:
2014-09-01 15:51:03
阅读次数:
279
CLOEXEC 就是新的内核里的这个选项是把fcntl的这个设置放在open里原子操作,以免在多线程程序里有可能会出现fcntl在设置的同时其它线程在 fork+execve,虽然在线程里fork比较罕见.这个选项的意思就是子进程默认是继承父进程打开的所有fd,如果句柄加入了这个设置,在 execv...
分类:
其他好文 时间:
2014-08-30 21:42:10
阅读次数:
426
lienhua342014-08-29fcntl 函数可以改变已打开的文件的性质。#include int fcntl(int filedes, int cmd, ... /* int arg */);fcntl 函数有 5 种功能:1. 复制一个现有的描述符(cmd=F_DUPFD)。2. 获取/...
分类:
其他好文 时间:
2014-08-30 01:09:48
阅读次数:
343
/**
* TCP,使用非阻塞 connect
**/
#include "unp.h"
int
connect_nonb(int sockfd, const SA *saptr, socklen_t salen, int nsec)
{
int flags, n, error;
socklen_t len;
fd_set rset, wset;
struct timeval tval;
//1.调用 fcntl 设置套接字为非阻塞
flags = Fcntl(sockfd, ...
分类:
其他好文 时间:
2014-08-24 23:57:13
阅读次数:
464
看了unix环境高级编程第三章,把代码也都自己敲了一遍,另主要讲解了一些IO函数,read/write/fseek/fcntl;这里主要是c函数,比较容易,看多了就熟悉了。对fcntl函数讲解比较到位,它可以得到和改变打开文件的属性(只读,只写等等,注意后面和stat区别),下面记录了自己在学习.....
分类:
其他好文 时间:
2014-08-24 22:09:33
阅读次数:
291