/********************************************************************** *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; }
UC高级编程--利用信号实现进程间通信,布布扣,bubuko.com
原文地址:http://blog.csdn.net/waldmer/article/details/37696353