我必须编写一个程序,该程序将使用当前正在运行的进程的PID创建一个新文件。当进程收到SIGUSR1
信号时,当前进程的PPID将被附加到文件中。如果收到SIGUSR2
,则文件将被截断。收到上述任何一个信号后,程序结束。
当我开始编译程序时,我在PuTTy中一无所获。
这是我的代码:
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <signal.h>
static void sig_usr(int);
int main(int argc, char *argv[]) {
if (signal(SIGUSR1, sig_usr) == SIG_ERR) {
printf("cannot catch SIGUSR1\n");
return 1;
};
if (signal(SIGUSR1, sig_usr) == SIG_ERR) {
printf("cannot catch SIGUSR1\n");
return 1;
};
if (signal(SIGUSR2, sig_usr) == SIG_ERR) {
printf("cannot catch SIGUSR2\n");
return 1;
};
while(1) {
pause();
}
return 0;
}
static void sig_usr(int signo) {
FILE *stream;
pid_t pid = getpid();
if (signo == SIGUSR1) {
printf("received SIGUSR1\n");
stream = fopen("plik.txt", "w");
fprintf(stream, "%d", pid);
fclose(stream);
} else if (signo == SIGUSR2) {
printf("received SIGUSR2\n");
stream = fopen("plik.txt", "w");
char value[1024] = " ";
fprintf(stream, "%s", value);
fclose(stream);
} else {
printf("received singal %d\n", signo);
}
}