UC高级编程--利用信号实现进程间通信

简介: <p></p> <pre code_snippet_id="425016" snippet_file_name="blog_20140712_1_7792218" name="code" class="objc">/********************************************************************** *Copyright (c)

/********************************************************************** 
*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;
}





目录
相关文章
|
1月前
|
安全 Java 数据处理
Python网络编程基础(Socket编程)多线程/多进程服务器编程
【4月更文挑战第11天】在网络编程中,随着客户端数量的增加,服务器的处理能力成为了一个重要的考量因素。为了处理多个客户端的并发请求,我们通常需要采用多线程或多进程的方式。在本章中,我们将探讨多线程/多进程服务器编程的概念,并通过一个多线程服务器的示例来演示其实现。
|
4月前
|
存储 算法 Linux
【Linux系统编程】进程状态
【Linux系统编程】进程状态
|
2天前
|
API 开发工具 Windows
LabVIEW中编程更改进程的优先级
LabVIEW中编程更改进程的优先级
|
17天前
|
Java API 调度
[Java并发基础]多进程编程
[Java并发基础]多进程编程
|
2月前
|
Python Java 调度
11 Python 进程与线程编程
11 Python 进程与线程编程
6 0
11 Python 进程与线程编程
|
2月前
|
监控 Unix Linux
深入理解Linux C/C++ 系统编程中系统调用导致的僵尸进程及其预防
深入理解Linux C/C++ 系统编程中系统调用导致的僵尸进程及其预防
45 0
|
2月前
|
消息中间件 Linux
Linux进程间通信(IPC)教程 Linux共享内存介绍:介绍POSIX共享内存的基本概念、用途和编程实践
Linux进程间通信(IPC)教程 Linux共享内存介绍:介绍POSIX共享内存的基本概念、用途和编程实践
26 2
|
2月前
|
存储 Linux 程序员
Linux进程间通信(IPC)教程 Linux信号量:讲解POSIX信号量在Linux系统进程间通信中的编程实践
Linux进程间通信(IPC)教程 Linux信号量:讲解POSIX信号量在Linux系统进程间通信中的编程实践
21 1
|
2月前
|
安全 程序员 数据处理
深入探索Python多进程编程:理论与实践
深入探索Python多进程编程:理论与实践
38 2
|
2月前
|
Python
Python实现多线程或多进程编程。
Python实现多线程或多进程编程。
17 0