后来在http://linux.die.net/man/3/open上仔细看了一下:
The open() function shall return a file descriptor for the named file that is the lowest file descriptor not currently open for that process
就是说open返回的fd是这个进程内未分配的最小文件描述符,好吧,这样就清楚了。
想到的其他问题:
1.一个进程如果多次打开同一文件,会得到不同的fd。
2.一个进程内多个线程打开一个文件会得到不同的fd。
3.对于记录锁,一个进程可以提出多个锁请求,即新锁可以替换老锁。一个进程多次打开一个文件,得到多个fd,再对这些fd上锁,这是ok的,即不会出现等锁的情况。
4.继续,一个进程创建了多个线程,多个线程打开一个文件,得到不同fd,众线程对各种的fd设置锁,是不会出现一个线程等待另一个线程的情况。所以,记录锁不能用于线程。
没有评论:
发表评论