diff options
author | Jared Adams <jaxad0127@gmail.com> | 2010-01-18 19:36:34 +0000 |
---|---|---|
committer | MadCamel <madcamel@gmail.com> | 2010-02-05 01:01:44 -0500 |
commit | cbf63a3ae9087178ae6b6abd88f14726aeb804f6 (patch) | |
tree | 523347f6829d710e5f9593e3a0ba61e42aa45921 | |
parent | d85546cf432ddb0ab4b1227aad2824ee77d745ac (diff) | |
download | tmwa-cbf63a3ae9087178ae6b6abd88f14726aeb804f6.tar.gz tmwa-cbf63a3ae9087178ae6b6abd88f14726aeb804f6.tar.bz2 tmwa-cbf63a3ae9087178ae6b6abd88f14726aeb804f6.tar.xz tmwa-cbf63a3ae9087178ae6b6abd88f14726aeb804f6.zip |
Attempt to fix forking problem on platinum
-rw-r--r-- | src/char/char.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/char/char.c b/src/char/char.c index 2b25399..3755d1f 100644 --- a/src/char/char.c +++ b/src/char/char.c @@ -16,6 +16,7 @@ #include <arpa/inet.h> #include <netdb.h> #include <stdarg.h> +#include <sys/wait.h> #include "core.h" #include "socket.h" @@ -114,6 +115,8 @@ int online_gm_display_min_level = 20; // minimum GM level to display 'GM' when int *online_chars; // same size of char_dat, and id value of current server (or -1) time_t update_online; // to update online files when we receiving information from a server (not less than 8 seconds) +pid_t pid = 0; // For forked DB writes + //------------------------------ // Writing function of logs file //------------------------------ @@ -828,7 +831,17 @@ void mmo_char_sync (void) //---------------------------------------------------- int mmo_char_sync_timer (int tid, unsigned int tick, int id, int data) { - pid_t pid; + if (pid != 0) + { + int status; + pid_t temp = waitpid (pid, &status, WNOHANG); + + // Need to check status too? + if (temp == 0) + { + return 0; + } + } // This can take a lot of time. Fork a child to handle the work and return at once // If we're unable to fork just continue running the function normally |