12. november 2004 - 09:40Der er
10 kommentarer og 1 løsning
Hvordan bruger man sigaction sammen med klasser?
Hvordan bruger man dette når kan opbygget med klasser: The following C code illustrates how to use the SIGINT and SIGQUIT signals to shutdown a UNIX application process when a user types control-C or control-\, respectively. Much of the error handling logic has been omitted to save space and reduce unnecessary details.
/* Global variables that control process shutdown. */ sig_atomic_t graceful_quit = 0; sig_atomic_t abortive_quit = 0;
/* Signal handler for SIGINT. */ void SIGINT_handler (int signum) { assert (signum == SIGINT); graceful_quit = 1; }
/* Signal handler for SIGQUIT. */ void SIGQUIT_handler (int signum) { assert (signum == SIGQUIT); abortive_quit = 1; }
/* ... */
int main (void) { struct sigaction sa; sigemptyset (&sa.sa_mask); sa.sa_flags = 0;
/* Register the handler for SIGINT. */ sa.sa_handler = SIGINT_handler; sigaction (SIGINT, &sa, 0);
/* Register the handler for SIGQUIT. */ sa.sa_handler = SIGQUIT_handler; sigaction (SIGQUIT, &sa, 0);
/* Run the main event loop. */ while (graceful_quit == 0 && abortive_quit == 0) do_work ();
if (abortive_quit == 1) { _exit (1); } else if graceful_quit { clean_up (); exit (0); }
/* NOTREACHED */ }
Det er reelt dette som er problemet: sa.sa_handler = SIGQUIT_handler;
Hvis SIGQUIT_handler-funktionen er en medlemsfunktion får man en compiler fejl.
- en global variabel som indeholdet et objekt af min klasse - en C funktion som kaldet en metode på objektet - sat den globale variabel til mit objekt og kaldt med C funktionen som argument
Ja - det virker faktisk rigtig fint - men jeg har tilgengæld nogle andre problemer nu. Nemlig med læsningen på COM-porten. Jeg ved ikke om det er noget i relation til dette?
Men det ligger vist desværre uden for mit ekspertise område.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.