我想学习我在网上冲浪的 NFS 锁定机制。使用nfslockd
或者 rpc.lockd
我们可以做到。但是在 Debian 中没有包。任何人都请帮助我是否应该在Debian中做。
打开伪终端的主控部分后
int fd_pseudo_term_master = open("/dev/ptmx",O_RDWR);
有/dev/pts/[NUMBER]
创建的文件,代表slave
他的伪终端的一部分。
像我这样无知的人可能会认为,在完成之后,ptsname(fd_pseudo_term_master,filename_pseudo_term_slave,buflen);
应该将其设置为简单地
做好事int fd_pseudo_term_slave = open(filename_pseudo_term_slave,O_RDWR);
。
然而,必须有一个非常重要的“锁定”伪终端从机用例,因为为了简单起见,在open
调用之前,必须使用man 3 unlockpt来“解锁”。
我无法找出这个用例是什么?最初锁定伪终端需要什么?用代码实现了什么(取自 libc)
/* Unlock the slave pseudo terminal associated with the master pseudo
terminal specified by FD. */
int
unlockpt (int fd)
{
#ifdef TIOCSPTLCK
int save_errno = errno;
int unlock = 0;
if (ioctl (fd, TIOCSPTLCK, &unlock))
{
if (errno == EINVAL)
{
errno = save_errno;
return 0;
}
else
return -1;
}
#endif
/* If we have no TIOCSPTLCK ioctl, all slave pseudo terminals are
unlocked by default. */
return 0;
}
如果可能,答案将详细说明用例,历史或当前。
问题的额外部分是:
当前的 linux 内核是否仍然依赖于“锁定伪终端从站”的这种功能?
想法:这是避免比赛的低效尝试吗?
等待答案我已经更多地研究了 linux 内核源代码,但自己没有任何好的答案。但是,似乎可以从伪终端的初始锁定情况中“提取”的一种用途是为伪终端主进程提供一些时间来设置对文件的访问权限/dev/pts/[NUMBER]
,以防止某些用户首先访问该文件。这可以作为答案的一部分吗?奇怪的是,然而,这种“初始锁定”状态似乎并不能真正阻止从属文件的多次打开,至少我认为在这里可以保证原子性。
我想锁定一个文件,运行一些测试然后解锁文件。我怎样才能做到这一点。我可以使用命令行、perl 或 shell 脚本。
我想锁定文件的原因是有时在连接ftp
到我们的 Apache 服务器时,我们在删除文件时收到错误:“无法打开或删除包含正在运行的程序的文件”。我想使用ftp
移动命令而不是删除命令进行测试,看看我是否发现了这个错误。我想测试锁定文件是否会导致此错误。