首页 > 代码库 > UC高级编程--利用信号实现进程间通信
UC高级编程--利用信号实现进程间通信
/********************************************************************** *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; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。