如何解决为什么我的进程没有不断通知我?当我删除该文件并再次创建它时,系统不会再次通知我有人能帮我吗?
具有两个进程 A(守护进程)和 B(前台进程)的系统。
进程 A 必须监视一个等待创建“test.x”文件的目录。
创建此文件时,进程 A 必须向进程 B 发送 SIGURSR1 信号。
收到此信号后,进程 B 必须在屏幕上打印 ok 并继续执行。
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <string.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/types.h>
const char * filename = "test.x";
void handler(pid_t);
int main(void) {
pid_t process_id;
pid_t sid = 0;
if ((process_id = fork()) < 0) {
perror("Fork");
exit(1);
}
if (process_id > 0) {
signal(SIGUSR1,handler);
for (;;)
pause();
} else {
while (1) {
if (access(filename,F_OK) == 0) {
// File exists
kill(0,SIGUSR1);
} else {
// File does not exist
}
}
}
// Change access permissions,Zero means permissions will be inherited
umask(0);
// Create a new session
sid = setsid();
if (sid < 0) {
exit(1);
}
// Close standard input,standard output,and standard error output
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
exit(0);
}
void handler(int sig) {
signal(SIGUSR1,handler);
psignal(sig,"Signal Received");
printf("OK\n");
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。