progsys:index
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionLast revisionBoth sides next revision | ||
progsys:index [2018/10/26 14:42] – orel | progsys:index [2020/11/06 11:14] – [Ctrl-C] orel | ||
---|---|---|---|
Line 979: | Line 979: | ||
==== Ctrl-C ==== | ==== Ctrl-C ==== | ||
- | Un processus fils est dans le même PGID (process group ID) que son père par defaut (pgid père = pgid fils = pid père). | + | Un processus fils est dans le même PGID (process group ID) que son père par defaut (pgid père = pgid fils = pid père). |
- | + | ||
- | **Nota Bene: If pid is less than -1, then sig is sent to every process in the process group whose ID is -pid.** | + | |
<code C sigint.c> | <code C sigint.c> | ||
Line 997: | Line 995: | ||
int main(void) | int main(void) | ||
{ | { | ||
- | | + | signal(SIGINT, |
- | | + | |
if (fork() == 0) | if (fork() == 0) | ||
Line 1016: | Line 1013: | ||
+ | ==== Timeout ==== | ||
+ | |||
+ | <code C executer-avant-delai.c> | ||
+ | |||
+ | #define _GNU_SOURCE | ||
+ | #include < | ||
+ | #include < | ||
+ | #include < | ||
+ | #include < | ||
+ | |||
+ | static struct sigaction sa, old; | ||
+ | static sigjmp_buf env; | ||
+ | |||
+ | static void myalarm(int sig) | ||
+ | { | ||
+ | printf(" | ||
+ | siglongjmp(env, | ||
+ | } | ||
+ | |||
+ | int executer_avant_delai( void (*fun)(void *), void *parametre, int delai_en_seconde) | ||
+ | { | ||
+ | int ret = 1; | ||
+ | sa.sa_handler = myalarm; | ||
+ | sa.sa_flags = 0; // SA_RESETHAND; | ||
+ | sigemptyset(& | ||
+ | sigaction(SIGALRM, | ||
+ | |||
+ | alarm(delai_en_seconde); | ||
+ | if(sigsetjmp(env, | ||
+ | fun(parametre); | ||
+ | else | ||
+ | ret = 0; // alarm | ||
+ | alarm(0); | ||
+ | sigaction(SIGALRM, | ||
+ | return ret; | ||
+ | } | ||
+ | </ |
progsys/index.txt · Last modified: 2024/03/18 15:06 by 127.0.0.1