mirror of
https://github.com/libevent/libevent.git
synced 2025-01-09 00:56:20 +08:00
Check for WNOWAIT in waitpid() in runtime (not in cmake/configure)
Because checking in cmake breaks cross-compiling. Introduced-in: 43eb56c7c738e3642f0981e3dd6ab9e082eec798. Fixes: #482 Fixes: #462 Refs: #475 v2: use waitid() with WNOWAIT v3: use WNOWAIT only if it available in waitpid(), because not all netbsd supports it
This commit is contained in:
parent
b2b4b4d74e
commit
66a4eb0c3a
@ -494,8 +494,6 @@ CHECK_TYPE_SIZE("void *" EVENT__SIZEOF_VOID_P)
|
||||
#CHECK_FILE_OFFSET_BITS()
|
||||
#set(EVENT___FILE_OFFSET_BITS _FILE_OFFSET_BITS)
|
||||
|
||||
include(CheckWaitpidSupportWNOWAIT)
|
||||
|
||||
# Verify kqueue works with pipes.
|
||||
if (EVENT__HAVE_KQUEUE)
|
||||
if (CMAKE_CROSSCOMPILING AND NOT EVENT__FORCE_KQUEUE_CHECK)
|
||||
|
@ -1,18 +0,0 @@
|
||||
include(CheckCSourceRuns)
|
||||
|
||||
check_c_source_runs(
|
||||
"
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/wait.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int
|
||||
main(int argc, char** argv)
|
||||
{
|
||||
pid_t pid;
|
||||
int status;
|
||||
if ((pid = fork()) == 0) _exit(0);
|
||||
_exit(waitpid(pid, &status, WNOWAIT) == -1);
|
||||
}"
|
||||
EVENT__HAVE_WAITPID_WITH_WNOWAIT)
|
20
configure.ac
20
configure.ac
@ -599,26 +599,6 @@ main(int argc, char **argv)
|
||||
fi
|
||||
AM_CONDITIONAL(EPOLL_BACKEND, [test "x$haveepoll" = "xyes"])
|
||||
|
||||
AC_MSG_CHECKING(waitpid support WNOWAIT)
|
||||
AC_TRY_RUN(
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/wait.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int
|
||||
main(int argc, char** argv)
|
||||
{
|
||||
pid_t pid;
|
||||
int status;
|
||||
if ((pid = fork()) == 0) _exit(0);
|
||||
_exit(waitpid(pid, &status, WNOWAIT) == -1);
|
||||
}, [AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(HAVE_WAITPID_WITH_WNOWAIT, 1,
|
||||
[Define if waitpid() supports WNOWAIT])
|
||||
], AC_MSG_RESULT(no), AC_MSG_RESULT(no))
|
||||
|
||||
|
||||
haveeventports=no
|
||||
AC_CHECK_FUNCS(port_create, [haveeventports=yes], )
|
||||
if test "x$haveeventports" = "xyes" ; then
|
||||
|
@ -526,7 +526,4 @@
|
||||
|
||||
#cmakedefine EVENT__NEED_DLLIMPORT 1
|
||||
|
||||
/* Define if waitpid() supports WNOWAIT */
|
||||
#cmakedefine EVENT__HAVE_WAITPID_WITH_WNOWAIT 1
|
||||
|
||||
#endif
|
||||
#endif /* \EVENT2_EVENT_CONFIG_H_INCLUDED_ */
|
||||
|
@ -855,11 +855,6 @@ test_fork(void)
|
||||
int status;
|
||||
struct event ev, sig_ev, usr_ev, existing_ev;
|
||||
pid_t pid;
|
||||
int wait_flags = 0;
|
||||
|
||||
#ifdef EVENT__HAVE_WAITPID_WITH_WNOWAIT
|
||||
wait_flags |= WNOWAIT;
|
||||
#endif
|
||||
|
||||
setup_test("After fork: ");
|
||||
|
||||
@ -934,7 +929,8 @@ test_fork(void)
|
||||
}
|
||||
|
||||
TT_BLATHER(("Before waitpid"));
|
||||
if (waitpid(pid, &status, wait_flags) == -1) {
|
||||
if ((waitpid(pid, &status, WNOWAIT) == -1 && errno == EINVAL) &&
|
||||
waitpid(pid, &status, 0) == -1) {
|
||||
perror("waitpid");
|
||||
exit(1);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user