在 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 可能有也可能没有强制文件锁,它们可能启用也可能不启用。