来自solaris的fcntl的Mannul,成功完成后,返回的值为F_SETLKW将为“除-1以外的值”。 但Apache httpd 1.3.41源代码(http_main.c)检查返回值是否为正数,如:
int ret;
while ((ret = fcntl(lock_fd, F_SETLKW, &unlock_it)) < 0 && errno == EINTR) {
/* nop */
}
if (ret < 0) {
ap_log_error(APLOG_MARK, APLOG_EMERG, server_conf,
"fcntl: F_SETLKW: Error getting accept lock, exiting! "
"Perhaps you need to use the LockFile directive to place "
"your lock file on a local disk!");
clean_child_exit(APEXIT_CHILDFATAL);
}
在极少数情况下,我们系统中的apache将退出此次失败的测试。我怀疑这是由fcntl返回的负值小于-1引起的。
那么,solaris中的fcntl何时会返回小于-1的值?
答案 0 :(得分:0)