检测创建文件或删除文件会报告:信号处理机制

#include<stdio.h>
#define _GNU_SOURC
#include<fcntl.h>
#include<stdlib.h>
#include<signal.h>
#include<unistd.h>
static void handler_d(int sig,siginfo_t *s,void* data)
{
	int even_fd,even_pid;
	even_fd=s->si_fd;
	even_pid=s->si_pid;
	printf("process:%d,has deleted something from fd:%d\n",even_pid,even_fd);
}
static void handler_m(int sig,siginfo_t *s,void* data)
{
	int even_fd,even_pid;
	even_fd=s->si_fd;
	even_pid=s->si_pid;
	printf("process:%d,has motified something from fd:%d\n",even_pid,even_fd);
}
int main()
{
	struct sigaction act_d,act_m;
	int fd1,fd2;
	pid_t pid;
	pid=fork();
	if(pid<0)
	{
		printf("error\n");
		exit(1);
	}
	else if(pid==0)
	{//child
		fd1=open("/home/xiaozhi",O_RDONLY);
		if(fd1==-1)
		{
			printf("open /home/xiaozhi fail\n");
		}

		fd2=open("/home/rz",O_RDONLY);
		if(fd2==-1)
		{
			printf("open /home/rz fail\n");
		}
		act_m.sa_sigaction=handler_m;
		sigemptyset(&act_m.sa_mask);
		act_m.sa_flags=SA_SIGINFO;

		sigaction(SIGRTMIN+2,&act_m,NULL);	

		fcntl(fd1,F_SETSIG,SIGRTMIN+2);
		fcntl(fd1,F_NOTIFY,DN_MODIFY|DN_MULTISHOT);

		fcntl(fd2,F_SETSIG,SIGRTMIN+2);
		fcntl(fd2,F_NOTIFY,DN_MODIFY|DN_MULTISHOT);

		while(1)
		{
			pause();
		}

	}
	else
	{
		//father
		fd1=open("/home/xiaozhi",O_RDONLY);
		if(fd1==-1)
		{
			printf("open /home/xiaozhi fail\n");
		}

		fd2=open("/home/rz",O_RDONLY);
		if(fd2==-1)
	    {
			printf("open /home/rz fail\n");
		}
		act_d.sa_sigaction=handler_d;
		sigemptyset(&act_d.sa_mask);
		act_d.sa_flags=SA_SIGINFO;

		sigaction(SIGRTMIN+1,&act_d,NULL);
		fcntl(fd1,F_SETSIG,SIGRTMIN+1);
		fcntl(fd1,F_NOTIFY,DN_MODIFY|DN_MULTISHOT);

		fcntl(fd2,F_SETSIG,SIGRTMIN+1);
		fcntl(fd2,F_NOTIFY,DN_MODIFY|DN_MULTISHOT);
		while(1)
		{
			pause();
		}
	}
}
时间: 2024-10-10 10:19:38

检测创建文件或删除文件会报告:信号处理机制的相关文章

Windows10如何在终端创建文件和删除文件

Windows10如何在终端创建文件和删除文件 如何打开终端 window键+R 输入cmd以管理员身份打开 创建文件 md 创建文件目录 如: md c:\test\myfields 如何删除文件夹 删除空文件夹 rd 文件名 如: 在文件目录下 c:\test rd myfields 删除非空文件夹 rd /s /q 文件根目录 如: rd c:\test\myfields 原文地址:https://www.cnblogs.com/g15009428458/p/12237020.html

C# 系统应用之ListView控件 (三).添加ContextMenuStrip右键菜单打开文件和删除文件功能

在前面讲述过使用TreeView控件和ListView控件显示磁盘目录信息,但仅仅是显示信息是不够的,我们还需要具体的操作.在"个人电脑使用历史痕迹"项目中我还需要添加"打开文件"和"删除文件"两种方法.具体如下: 在第一篇文章"C# 系统应用之TreeView控件 (一).显示树状磁盘文件目录及加载图标"中显示如下: http://blog.csdn.net/eastmount/article/details/1945310

Delphi阿里云存储对象【支持上传文件、下载文件、删除文件、创建目录、删除目录、Bucket操作等】

Delphi阿里云存储对象             阿里云api文档 [Delphi阿里云存储对象]支持 获取Bucket列表.设置Bucket权限).创建Bucket.删除Bucket.获取文件列表.上传文件.下载文件.删除文件.读取文件.判断文件是否存在.创建目录.删除目录等功能 原文地址:https://www.cnblogs.com/zhimamaigua/p/11020392.html

因为 &#39;PRIMARY&#39; 文件组已满。请删除不需要的文件、删除文件组中的对象、将其他文件添加到文件组或为文件组中的现有文件启用自动增长,以便增加可用磁盘空间

导致你的问题的,应该有2种可能性: 1.存放你的primary文件组的磁盘,已经满了: use master--你的数据库名称 go --看看你的primary组里的文件 select ds.name, df.physical_name, --主文件组的物理文件的路径 --打开我的电脑,查看文件所在盘,是否磁盘已满 df.is_percent_growth, --是否自动增长 df.growth --增长多少 from sys.data_spaces ds inner join sys.data

无法为数据库 XXX 中的对象XXX 分配空间,因为 &#39;PRIMARY&#39; 文件组已满。请删除不需要的文件、删除文件组中的对象、将其他文件添加到文件组或为文件组中的现有文件启用自动增长,以便增加可用磁盘空间。

无法为数据库 XXX 中的对象XXX 分配空间,因为 'PRIMARY' 文件组已满.请删除不需要的文件.删除文件组中的对象.将其他文件添加到文件组或为文件组中的现有文件启用自动增长,以便增加可用磁盘空间. 原因是装了mssql express 2005 版本,该版本最大的限制是4G 百度说明: 1.数据库的大小限制:SQL Server 2005 Express 和SQL Server 2008 Express 数据库的大小限制最大为 4GB,最新版本的SQL Server 2008 R2 E

Python - 创建目录,切换目录,创建文件,复制文件,移动文件 ,删除文件夹及文件

# -*- coding: utf-8 -*- """ Created on Mon Jan  9 00:35:43 2017 @author-Weixin: 953558077 """ import os import shutil import time ''' shutil模块的基础功能简介 copyfile( src, dst)      从源src复制到dst中去.当然前提是目标地址是具备可写权限.抛出的异常信息为IOException

Centos7下创建文件夹 移动文件/文件夹 删除文件/文件夹 解压/文件夹打包压缩 命令整理

一.创建文件夹 1.创建本目录下文件夹 mkdir dir 2.创建其他目录下文件夹    mkdir dir/file 3.创建多级目录文件夹    mkdir -p tmp/dir 4.创建file.txt文件    mkdir dir/file.txt 二.修改文件夹名 1.文件夹重命名    mv dir dir1  2.文件重命名    mv dir/file.txt dir/files.txt 三.查看文件夹/文件 1.cd dir 2.cd dir/dir1 3.回到主目录 cd

创建文件夹删除文件夹等操作

文件夹的操作 一.新建文件夹的操作 public static void creatfolder(String fileName) { File file=new File(fileName); if (file.isDirectory()) { try { file.createNewFile(); } catch (IOException e) { } }else { System.out.println("这不是一个文件夹"); } 二.删除文件夹 public static v

移动混合开发之android文件管理新建文件和删除文件

今天经过一天超过8小时的实践,有很多CSS上的细节需要注意: 1, /*注意是对before的操作*/ .content ul li .icon-check-empty:before{ display: block; /*webFont设置其width和height时无效,只有设置font-size*/ /*width: 3rem;*/ /*height: 3rem;*/ font-size: 1.5rem; position: absolute; top:0; left: 0; bottom:

C/C++ 生成文件夹 删除文件夹 获取运行文件路径

最近要用MFC开发一个界面,里面有一个需求就是生成一个与可执行文件(exe文件)同名的文件夹,比如我的可执行文件路径是D:\KFS\codes\22222\Release\22222.exe,我需要在D:\KFS\codes\22222\Release路径下生成一个22222的文件夹放东西.查阅了一点资料之后,成功了.之后写了一个小demo.下面上代码: #include <windows.h> #include<iostream> #include<io.h> usi