一、模拟获取GPS数据,然后1s更新到显示屏。
进程A:每秒打开文件gps.dat写date时间到文件,打开写前清空下数据,
写完即发送信号SIGUSR1到进程B。
进程B:收到信号SIGUSR1,只读方式打开文件gps.dat,把读到的数据打印到显示屏。提示:用system(“date > gps.dat”)写数据重定向到文件。
#include <stdio.h>
#include <signal.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
void interrupt_service_rountine(int signo)
{
char buf[1024]={0};
int fd = open("gps.dat",O_RDONLY);
int ret = read(fd,buf,100);
printf("current date is %s",buf);
close(fd);
}
int main()
{
signal(SIGALRM,interrupt_service_rountine);
while(1)
{
int fd = creat("gps.dat",0640);
close(fd);
system("date > gps.dat");
alarm(1);
sleep(1);
}
}
程序运行结果:
可以看到程序每秒打印输出,当然你也可以用kill()函数创建子进程来实现,
效果都一样。