在 c unix 中使用 flock(),尝试在另一个进程中打开文件时收到哪种错误?
Using flock() in c unix, which kind of error I receive trying opening file in another process?
我在我的代码中使用 flock() server/client 以允许仅一个进程读取文件。但是,如果另一个进程试图打开该文件,我认为计算会暂停,我会处理错误以提供向用户解释问题所在的输出。我该怎么做?
您的其他进程在执行 open()
调用时不会收到错误。对 flock()
的调用是 advisory - 对 open()
、read()
或 write()
的调用失败不会强制执行锁定。其他进程需要执行它们自己的 flock()
调用以确定文件是否已被锁定以供读取或写入。
有关完整信息,请参阅 man page。
您需要使用强制文件锁定,而不是建议文件锁定。 flock
所做的建议文件锁定仅防止两个进程同时锁定同一个文件。它对不尝试锁定文件的不合作进程没有影响。
您的 UNIX 可能有也可能没有强制文件锁,它们可能启用也可能不启用。
我在我的代码中使用 flock() server/client 以允许仅一个进程读取文件。但是,如果另一个进程试图打开该文件,我认为计算会暂停,我会处理错误以提供向用户解释问题所在的输出。我该怎么做?
您的其他进程在执行 open()
调用时不会收到错误。对 flock()
的调用是 advisory - 对 open()
、read()
或 write()
的调用失败不会强制执行锁定。其他进程需要执行它们自己的 flock()
调用以确定文件是否已被锁定以供读取或写入。
有关完整信息,请参阅 man page。
您需要使用强制文件锁定,而不是建议文件锁定。 flock
所做的建议文件锁定仅防止两个进程同时锁定同一个文件。它对不尝试锁定文件的不合作进程没有影响。
您的 UNIX 可能有也可能没有强制文件锁,它们可能启用也可能不启用。