From 962ee7180ea70430ccaf0446ea82610b5d9f506e Mon Sep 17 00:00:00 2001 From: MAO Dongyang Date: Wed, 22 Mar 2023 16:03:42 +0100 Subject: [PATCH] SIGNAL --- System2/catch_signal/main.c | 23 +++++++++++++++++++++++ System2/create_ps/main.c | 3 +-- System2/example_alarm/main.c | 21 +++++++++++++++++++++ System2/sendToFile/main.c | 23 +++++++++++++++++++++++ System2/sendToFile/test.txt | 0 TP3/List/main.c | 1 - 6 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 System2/catch_signal/main.c create mode 100644 System2/example_alarm/main.c create mode 100644 System2/sendToFile/main.c create mode 100644 System2/sendToFile/test.txt diff --git a/System2/catch_signal/main.c b/System2/catch_signal/main.c new file mode 100644 index 0000000..e318e0e --- /dev/null +++ b/System2/catch_signal/main.c @@ -0,0 +1,23 @@ +#include +#include +#include + +void sig_usr(int signo) +{ + if (signo == SIGUSR1) + printf("received SIGUSR1\n"); + else if (signo == SIGUSR2) + printf("received SIGUSR2\n"); + else + printf("received signal %d\n", signo); +} + +int main(void) +{ + if (signal(SIGUSR1, sig_usr) == SIG_ERR) + printf("can't catch SIGUSR1\n"); + if (signal(SIGUSR2, sig_usr) == SIG_ERR) + printf("can't catch SIGUSR2\n"); + for (;;) + pause(); +} \ No newline at end of file diff --git a/System2/create_ps/main.c b/System2/create_ps/main.c index cd8879a..e553bea 100644 --- a/System2/create_ps/main.c +++ b/System2/create_ps/main.c @@ -5,8 +5,7 @@ int main() { - pid_t fpid; - + pid_t fpid; // fpid表示fork函数返回的值 fpid = fork(); // create child process if (fpid == -1) diff --git a/System2/example_alarm/main.c b/System2/example_alarm/main.c new file mode 100644 index 0000000..43e1e88 --- /dev/null +++ b/System2/example_alarm/main.c @@ -0,0 +1,21 @@ +#include +#include +#include + +void sig_handler(int signo) +{ + printf("in handler\n"); +} + +int main() +{ + signal(SIGALRM, sig_handler); + alarm(5); + for (size_t i = 0; i < 30; i++) + { + + printf("i = %d, In main\n", i); + sleep(1); + } + return 0; +} \ No newline at end of file diff --git a/System2/sendToFile/main.c b/System2/sendToFile/main.c new file mode 100644 index 0000000..7b4502f --- /dev/null +++ b/System2/sendToFile/main.c @@ -0,0 +1,23 @@ +#include +#include +#include + +void handler(int signum) +{ + FILE *fp; + fp = fopen("test.txt", "w"); + fprintf(fp, "coucou, je suis bien en vie!\n"); + fclose(fp); +} + +int main() +{ + signal(SIGUSR1, handler); + for (size_t i = 0; i < 30; i++) + { + + printf("i = %d, In main\n", i); + sleep(1); + } + return 0; +} diff --git a/System2/sendToFile/test.txt b/System2/sendToFile/test.txt new file mode 100644 index 0000000..e69de29 diff --git a/TP3/List/main.c b/TP3/List/main.c index 7a52834..23e9c34 100644 --- a/TP3/List/main.c +++ b/TP3/List/main.c @@ -10,7 +10,6 @@ int main() SCell *cell; list = CreateList(); - printf("Add 5, 3, 1\n"); AddElementBegin(list, 5); cell = AddElementBegin(list, 3);