/**********************************************************************
*Copyright (c) 2014,TianYuan
*All rights reserved.
*
* 文件名称: sigin.c
* 文件标识:无
* 内容摘要:利用信号实现进程间通信,测试代码. 把要发送的数据存放到文件中,并发送信号.
* 其它说明:无
* 当前版本: V1.0
* 作 者: wuyq
* 完成日期: 20140711
*
*修改记录1: //修改历史记录,包括修改日期、版本号、修改人及修改内容等
*修改日期 版本号 修改人 修改内容
* --------------------------------------------------------------------------------------------------
* 20140711 V1.0 wuyq 创建
**********************************************************************/
#include <signal.h>
#include <fcntl.h>
#include <string.h>
#include <stdio.h>
int main()
{
pid_t who;
char buf[100];
int fd;
printf("qing shu ru dui fang jin cheng id:");
scanf("%d", &who);
while(1)
{
printf("input send data:");
scanf(" %[^\n]", buf);
while(1)
{
fd = open("data", O_WRONLY|O_CREAT|O_EXCL, 0666);
if(fd >= 0)
{
break;
}
puts("文件已经存在");
sleep(1);
}
write(fd, buf, strlen(buf));
close(fd);
kill(who, SIGUSR1);//给进程发送信号
}
return 0;
}
/**********************************************************************
*Copyright (c) 2014,TianYuan
*All rights reserved.
*
* 文件名称: sigout.c
* 文件标识:无
* 内容摘要:利用信号实现进程间通信,测试代码.收到信号后,从文件读取内容.
* 其它说明:无
* 当前版本: V1.0
* 作 者: wuyq
* 完成日期: 20140711
*
*修改记录1: //修改历史记录,包括修改日期、版本号、修改人及修改内容等
*修改日期 版本号 修改人 修改内容
* --------------------------------------------------------------------------------------------------
* 20140711 V1.0 wuyq 创建
**********************************************************************/
#include <unistd.h>
#include <signal.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
void func(int sig)//信号处理函数
{
char buf[100];
int fd = open("data", O_RDONLY);
if(fd < 0)
{
return;
}
int len = read(fd, buf, sizeof(buf));
if(len > 0)
{
buf[len]='\0';
puts(buf);//输出文件中读取到的内容
}
close(fd);
unlink("data");//删除文件
}
int main()
{
signal(SIGUSR1, func);
printf("pid = %d\n", getpid());
while(1)
{
sleep(1);
}
return 0;
}