nginx的epoll_create的定义怎么是
int epoll_create(int size){
return -1;
}
int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event)
{
return -1;
}
int epoll_wait(int epfd, struct epoll_event *events, int nevents, int timeout)
{
return -1;
}
这是什么情况呢??? 去哪看的源码, 这是系统接口, Nginx怎么可能自己实现, 我grep了nginx源代码也没找到. 回复 2# linux_c_py_php
从nginx的官网下了一份nginx-0.5.38.tar.gz的源码看的...,额,看有些人说nginx没有用glibc库的epoll接口,但是为什么还要实现这种接口呢? http://blog.csdn.net/lengzijian/article/details/7609388
去看这个,有一些nginx源码解读 回复 3# totopper
谁说的nginx没有glibc的epoll接口的?nginx的epoll定义只是为了生成makefile时进行自动测试用的。也就说是这个代码是用在类似于./configure生成makefile进行特性的feature检测的。保证在没有epoll的系统上可以正常检测,检查过后真正使用的还是glib的接口。
下面的三个代码片段可以看明白这个关系。int epoll_create(int size)
{
return -1;
}
ngx_feature="epoll"
ngx_feature_name="NGX_HAVE_EPOLL"
ngx_feature_run=yes
ngx_feature_incs="#include <sys/epoll.h>"
ngx_feature_path=
ngx_feature_libs=
ngx_feature_test="int efd = 0;
struct epoll_event ee;
ee.events = EPOLLIN|EPOLLOUT|EPOLLET;
ee.data.ptr = NULL;
efd = epoll_create(100);
if (efd == -1) return 1;"
. auto/feature
if [ $ngx_found = yes ]; then
have=NGX_HAVE_CLEAR_EVENT . auto/have
CORE_SRCS="$CORE_SRCS $EPOLL_SRCS"
EVENT_MODULES="$EVENT_MODULES $EPOLL_MODULE"
EVENT_FOUND=YES
fi
#include <sys/types.h>
$NGX_INCLUDE_UNISTD_H
$ngx_feature_incs
int main() {
$ngx_feature_test;
return 0;
}
END
ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS $ngx_feature_inc_path \
-o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_TEST_LD_OPT $ngx_feature_libs"
ngx_feature_inc_path=
eval "/bin/sh -c \"$ngx_test\" >> $NGX_AUTOCONF_ERR 2>&1"
if [ -x $NGX_AUTOTEST ]; then
case "$ngx_feature_run" in
yes)
# /bin/sh is used to intercept "Killed" or "Abort trap" messages
if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then
echo " found"
ngx_found=yes
if test -n "$ngx_feature_name"; then
have=$ngx_have_feature . auto/have
fi
else
echo " found but is not working"
fi
;;
value)
页:
[1]