1、图书管理系统以UNIX系统文件部分系统调用为基础设计一个简易的图书管理系统。
要求实现:图书的录入、查询、借阅、清理、统计等功能、还要实现对每天的借阅情况进行统计并打印出统计报表,操作界面要尽量完善。
图书资料信息必须保存在文件中。
2、信号通信与进程控制(l)进程的创建:编写一段程序,使用系统调用fork()创建两个或多个子进程。
当此程序运行时,在系统中有一个父进程和其余为子进程在活动。
(2)进程的控制:在程序中使用系统调用lockf()来给每一个进程加锁,实现进程之间的互斥。
(3)进程通信:①软中断通信;
②在程序中使用实例signal(SIGINT,SIG_IGN)和signal(SIGQUIT,SIG_IGN)进行通信操作,观察执行结果,并分析原因。
(4)软中断的捕获与重定义。
首先定义一个服务函数function(),然后利用signal(sig,function)系统调用来实现中断的捕获与改道。
(5)使用操作系统保留给用户的信号SIGUSR1和SIGUSR2进行通信。
(6)扩展程序,使之成为信号或事件驱动的应用程序。
3、管道通信利用UNIX系统提供的管道机制实现进程间的通信。
(1)管道通信。
利用pipe()和lockf()系统调用,编写程序,实现同族进程间的通信。
使用系统调用pipe()建立一条管道线;
创建子进程P1、P2、…。
子进程Pi分别向管道各写信息,而父进程则从管道中读出来自于各子进程的信息,实现进程家族间无名管道通讯。
扩展之,使之成为客户/服务器模式,并完成一定的任务(自己定义)。
(2)命名管道通信:利用mkfifo(name,mode)或mknod(name,mode,0)创建一个命名管道,然后利用它和文件部分系统调用实现不同进程间的通信。
改造之,使之成为客户/服务器模式,并完成一定的任务(自己定义)。
4、进程间通信(IPC):消息机制(1)消息的创建、发送和接收使用系统调用msgget(),msgsnd(),msgget(),及msgctl()编制一长度为1K的消息发送和接收的程序。
1)为了便于操作和观察结果,用一个程序作为“引子”,先后fork()两个子进程,SERVER和CLIENT,进行通信。
SERVER和CLIENT也可分别为2个各自独立的程序。
2)SERVER端建立一个Key为175的消息队列,等待其他进程发来的消息。
当遇到类型为1的消息,则作为结束信号,取消该队列,并退出SERVER。
SERVER每接收到一个消息后显示一句“(server)received”。
3)CLIENT端使用key为175的消息队列,先后发送类型从10到1的消息,然后退出。
最后的一个消息,即是SERVER端需要的结束信号。
CLIENT每发送一条消息后显示一句“(client)sent”。
4)父进程在SERVER和CLIENT均退出后结束。
(2)功能扩展:在sever端创建一个服务函数,从而实现C/S通讯要求SERVER每接收到一次数据后不仅仅显示“(server)received”,而是做一些其它事情,比如读取或查询某个文件,或者执行一个shell命令等。
此功能可由设计者自己定义。
在此基础上可以扩展客户端,比如设计一个菜单界面,接收不同的选项,并发送到服务器端,请求对方提供服务。
5、进程间通信(IPC):共享内存机制(1)共享存储区的创建,附接和断接使用系统调用shmget(),shmat(),msgdt(),shmctl(),编制一长度为1K的消息发送和接收的程序。
1)为了便于操作和观察结果,用一个程序作为“引子”,先后fork()两个子进程,SERVER和CLIENT,进行通信。
SERVER和CLIENT也可分别为2个各自独立的程序。
2)SERVER端建立一个Key为375的共享区,并将第一个字节置为-1,作为数据空的标志,等待其他进程发来的消息。
当该字节的值发生变化时,表示收到了信息,并进行处理。
然后再次把它的值设为-1。
如果遇到的值为0,则视为结束信号,取消该队列,并退出SERVER。
SERVER每接收到一次数据后显示“(server)received”。
3)CLIENT端建立一个Key为375的共享区,当共享取得第一个字节为-1时,SERVER端空闲,可发送请求。
CLIENT随即填入9到0。
期间等待Server端的再次空闲。
进行完这些操作后,CLIENT退出。
CLIENT每发送一次数据后显示“(client)sent”。
4)父进程在SERVER和CLIENT均退出后结束。
(2)功能扩展:在sever端创建一个服务函数,从而形成C/S通讯模式要求SERVER每接收到一次数据后不仅仅显示“(server)received”,而是做一些其它事情,比如
2024/7/19 3:04:26 918KB 操作系统
1
作者:胡彦本框架是一个lex/yacc完整的示例,用于学习lex/yacc程序基本的搭建方法,在linux/cygwin下敲入make就可以编译和执行。
本例子虽小却演示了lex/yacc程序最常见和重要的特征:*lex/yacc文件格式、程序结构。
*如何在lex/yacc中使用C++和STL库,用extern"C"声明那些lex/yacc生成的、要链接的C函数,如yylex(),yywrap(),yyerror()。
*重定义YYSTYPE/yylval为复杂类型。
*用%token方式声明yacc记号。
*用%type方式声明非终结符的类型。
*lex里正则表达式的定义、识别方式。
*lex里用yylval向yacc返回属性值。
*在yacc嵌入的C代码动作里,对记号属性($1,$2等)、和非终结符属性($$)的正确引用方法。
*对yyin/yyout重赋值,以改变yacc默认的输入/输出目标。
*如何开始解析(yyparse函数),结束或继续解析(yywrap函数)。
本例子功能是,对当前目录下的file.txt文件,解析出其中的标识符、数字、其它符号,显示在屏幕上。
linux调试环境是Ubuntu10.04。
总之,大部分框架已经搭好了,你只要稍加扩展就可以成为一个计算器之类的程序,用于《编译原理》的课程设计。
文件列表:lex.l:lex程序文件。
yacc.y:yacc程序文件。
main.hpp:共同使用的头文件。
Makefile:makefile文件。
file.txt:给程序解析的文本文件。
使用方法:1-把lex_yacc_example.rar解压到linux/cygwin下。
2-命令行进入lex_yacc_example目录。
3-敲入make,这时会自动执行以下操作:(1)自动调用flex编译.l文件,生成lex.yy.c文件。
(2)自动调用bison编译.y文件,生成yacc.tab.c和yacc.tab.h文件。
(3)自动调用g++编译、链接出可执行文件main。
(4)自动执行main,得到如下结果:。
bison-dyacc.yg++-clex.yy.cg++-cyacc.tab.cg++lex.yy.oyacc.tab.o-omainid:abcid:defghiint:123int:45678op:!op:@op:#op:$AllId:abcdefghi参考资料:《Lex和Yacc从入门到精通(6)-解析C-C++包含文件》,http://blog.csdn.net/pandaxcl/article/details/1321552其它文章和代码请留意我的blog:http://blog.csdn.net/huyansoft2013-4-27
1
头文件stm32f10x_conf.h解决keil4.2.2下建立工程重定义问题
2023/7/1 14:50:25 3KB 头文件 重定义
1
串口1、3接收有后缀"\r\n"和无后缀"\r\n"的不定长数据(不得超过固定长度)串口1经过重定义printf打印接收到串口1和串口3的数据,当接收到指定字符串则经过串口3发送指定字符串
2016/5/15 14:25:53 4.43MB USART1 USART3
1
本套ProE映射键规划针对情况为:主要用零件、组装,少量钣金、工程图,常用基本建模、拔模、测量、剖面,由此出发,参阅多份前人的映射键规划设置,经若干次修改而成。
文件包括一份规划表格,一份代码(两百余映射键,三千行代码)规划上特点及考虑要点为:1.考虑方便使用,按键主要功能分布在键盘左区,少量常用键为单键,大多为双键,少量为多键。
2.相近功能布置在相同键或相近区域,如A-装配,S-实体特征、D-剪裁特征、F-曲面特征,W-钣金,E-编辑,Q-快速操作,X-剖面,数字-视图,等等。
3.特征操作与草绘分别在键盘左区与右区,分别进行优化规划。
4.结合代码,实现一键通用或多用,减少冗余按键,增强了草绘、新建特征、编辑特征、剖面建立与查看、视图查看等功能的方便性。
5.考虑方便记忆,按键尽量取自其英文版词汇,同时兼顾操作方便、避免规划冲突、减少误操作,以及尽量包容不同软件版本。
6.全套二百余键,不求全记,而求在需要用时能方便。
专门制作Excel规划表格,按键分类着色,将常用和重点突出,以彩色打印,可方便查阅,快速上手。
功能上的特点(通过代码实现,简单介绍部分):1.兼容PROE2.0/3.0/4.0,因为自己安的是2.0和4.0,公司的是2.0和3.0,所以兼顾考虑,但有某些细微差异。
2.通过映射键的组合与嵌套,实现一键通用或多用。
如:SE-实体拉伸,直接进入参照选择界面,在选择两平面或选择一平面后在空白处点击左键后,会直接进入草绘界面。
ED-编辑定义,可以用于特征、组件中零件、层、工程图视图和尺寸的编辑;
EF-编辑参照平面,能直接进入拉伸、旋转、扫描、筋、填充等特征的参照选择界面;
ES-编辑草绘,则能直接进上述特征的草绘状态;
ET-编辑轨迹,则能用于扫描的轨迹编辑;
RF-在特征出错时,执行重定义,而ED、EF、ES、ET也能直接进入对应编辑状态进行修复。
QE-快速退出,能退出大多编辑状态,不保存;
QA(TY)-快速接受,无错时能一路打勾;
SA(Y)-单步接受,一步一步地确定;
II-镜像,在特征与草绘、工程图均能使用。
3.通过映射键控制配置选项的开关,实现某些特殊功能。
如:KN-SketchRefit-NO关闭草绘自动缩放,解决困扰很多人许久的草绘更改尺寸后自动缩放的问题。
KY恢复默认状态。
S3或S4,能使PROE在新建或修改草绘时不会自动定向,速度快了,像感觉其它3D软件一样。
S1或S2恢复。
4.实现快速新建一个或多个剖面功能、快速查看功能。
如:XF,查看Front剖面,并定向Front;
XCA到XCZ,分别以字母A到Z命名的剖面;
XGF,自动进入Front草绘,划线后,建立偏移类型剖面;
XS,能快速进入剖面的草绘编辑状态;
NXAF,NXBF,分别在组件或零件中以Front面为基准,陈列10个平面并建立对应剖面,完成后可编辑修改;
NXAX,NXBX,分别在组件或零件中以一面和一轴为参考,旋转陈列18个平面并建立对应剖面,相当于每10°都有一截面。
5.增加某些特殊功能键,如AA,在3D中选中某个元件或特征后,运行AA可自动找到它在模型树中的位置。
2017/8/27 4:10:20 1.54MB ProE 通用 快捷键 映射键
1
该程序为可执行文件,功能是将某个目录下的xls或xlsx文件全部转化为csv文件,源码为:http://download.csdn.net/download/zonelza3/4144850,但由于这位朋友的源码会与WIN的SDK重定义Font类,所以导致编译不过,我修改了一下excel的Font类,然后编译的,有兴味的同学可以研究一下.懒得编译的同学在解压后的bin目录下可以拿到ExcelToCsv.exe的可执行文件,仅限win系统下的,本人已测.
2022/9/7 20:25:27 94KB xlsx xls csv 批量
1
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡