使用WIN32API实现:父进程:创建无名管道及子进程子进程继承父进程的句柄从管道读取子进程写入的字符串并显示在屏幕上等待子进程结束,之后,父进程结束子进程:继承父进程的管道向管道中写入一个字符串子进程结束
2024/8/20 11:17:29 5.27MB 进程的通信 管道 父进程 子进程
1
编写程序实现进程的管道通信。
用系统调用pipe()建立一管道,二个子进程P1和P2分别向管道各写一句话:Child1issendingamessage!Child2issendingamessage!父进程从管道中读出二个来自子进程的信息并显示(要求先接收P1,后P2)。
2024/7/22 0:22:10 21KB Linux 操作系统 管道通信 实验报告
1
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
之前曾经翻译过很多Docker入门介绍的文章,之所以再翻译这篇,是因为Anders的角度很独特,思路也很调理。
你也可以看下作者的演讲稿《Docker,DevOps的未来》。
本文介绍了Docker的一些基本概念、诱人的特性、Docker的工作原理、日常管理基本操作,以及一些Docker的问题的解决方案。
相比很多人的解释,我相信说Docker是一个轻量级的虚拟机更容易理解。
另外一种解释是:Docker就是操作系统中的chroot。
如果你不知道chroot是什么的话,后一种解释可能无法帮助你理解什么是Docker。
chroot是一种操作,能改变当前运行的进程和子进程的根目录。
程序运行在这样的一个被修
2024/5/24 0:24:28 2.5MB 我的碎碎念:Docker入门指南
1
内容简介······这是一本经典的Windows核心编程指南,从第1版到第5版,引领着数十万程序员走入Windows开发阵营,培养了大批精英。
作为Windows开发人员的必备参考,本书是为打算理解Windows的C和C++程序员精心设计的。
第5版全面覆盖WindowsXP,WindowsVista和WindowsServer2008中的170个新增函数和Windows特性。
书中还讲解了Windows系统如何使用这些特性,我们开发的应用程序又如何充分使用这些特性,如何自行创建新的特性。
...作者简介······JeffreyRichter是一位在全球享有盛誉的技术作家,尤其在Windows/.NET领域有着杰出的贡献。
他的第一本Windows著作Windows3:ADeveloper'sGuide大获好评,从而声名远扬。
之后,他又推出了经典著作《Windows高级编程指南》和《Windows核心编程》。
如今这两本书早已成为Windows程序设计领域的颠峰之作,培育了几代软件开发设计人员。
他的每一本新作问世,我们都有理由相信这是一本巨著,我们想要的一切尽在其中。
Jeffery是Wintellect公司的创始人之一,也是MSDN杂志.NET专栏的特邀编辑。
现在他正领导开发该公司的.NET程序设计课程,向大众推广.NET技术。
因为他自1999年开始就参与了微软.NET框架开发组的咨询工作,与这些一线人员一起经历了.NET的孕育与诞生,所以他对.NET思想的领悟、对.NET的细节熟稔,是其他任何作家难以企及的。
他是.NET著作领域中当之无愧的一面旗帜。
ChristopheNasarre是BusinessObjects的软件架构师和开发部门领导,该公司致力于帮助其他企业更好地专注于其主营业务,通过商业智能方案来提升决策能力和业绩。
他为Addison-Wesley,APress和MicrosoftPress出版的许多图书担任过技术审校,此外还是MSDNMagazine的撰稿人。
目录······第1部分必备知识第1章错误处理1.1定义自己的错误代码1.2ErrorShow示例程序第2章字符和字符串处理2.1字符编码2.2ANSI字符和Unicode字符与字符串数据类型2.3Windows中的Unicode函数和ANSI函数2.4C运行库中的Unicode函数和ANSI函数2.5C运行库中的安全字符串函数2.5.1初识新的安全字符串函数2.5.2在处理字符串时如何获得更多控制2.5.3Windows字符串函数2.6为何要用Unicode2.7推荐的字符和字符串处理方式2.8Unicode与ANSI字符串转换2.8.1导出ANSI和UnicodeDLL函数2.8.2判断文本是ANSI还是Unicode第3章内核对象3.1何为内核对象3.1.1使用计数3.1.2内核对象的安全性3.2进程内核对象句柄表3.2.1创建一个内核对象3.2.2关闭内核对象3.3跨进程边界共享内核对象3.3.1使用对象句柄继承3.3.2改变句柄的标志3.3.3为对象命名3.3.4终端服务命名空间3.3.5专有命名空间3.3.5复制对象句柄第Ⅱ部分工作机制第4章进程4.1编写第一个Windows应用程序4.1.1进程实例句柄4.1.2进程前一个实例的句柄4.1.3进程的命令行4.1.4进程的环境变量4.1.5进程的关联性4.1.6进程的错误模式4.1.7进程当前所在的驱动器和目录4.1.8进程的当前目录4.1.9系统版本4.2CreateProcess函数4.2.1pszApplicationName和pszCommandLine参数4.2.2psaProcess,psaThread和bInheritHandles参数4.2.3fdwCreate参数4.2.4pvEnvironment参数4.2.5pszCurDir参数4.2.6psiStartInfo参数4.2.7ppiProcInfo参数4.3终止进程4.3.1主线程的入口点函数返回4.3.2ExitProcess函数4.3.3TerminateProcess函数4.3.4当进程中的所有线程终止时4.3.5当进程终止运行时4.4子进程4.5管理员以标准用户权限运行时4.5.1自动提升进程的权限4.5.2手动提升进程的权限4.5.3何为当前权限上下文4.5.4枚举系统中正在运行的
2023/12/17 14:07:31 227.8MB Windows C++
1
当程序运行时,父进程fork出4个子进程
父进程负责产生消息(每1s产生一个消息),4个子进程负责处理消息。
子进程之间通过消息队列来传递消息。
父进程需要维护一个本地数据库(格式与共享数据库相同),当生成一个消息时,父进程要同步更新本地数据库。
子进程在处理消息时,根据消息的内容来对共享数据库进行更新
1
华中科技大学操作系统课程设计专用,内含5个部分:1.1利用系统调用实现文件拷贝(含代码和makefile)1.2多进程编程,实现三个子进程窗口(含代码和makefile)2自己的系统调用,只有系统调用实现的代码,系统调用需要自己编译内核3字符设备驱动的编写(含代码和makefile)4GTK编写系统监视器,可以监测系统很多方面(含代码和makefile)5虚拟文件系统(实现的比较简单)(含代码和makefile)说明:GTK实现的系统监视器,功能如下:1.CPU各种信息,包括物理信息以及CPU利用率绘图2.内存各种信息,包括利用率,内存使用率绘图等3.进程信息,可以杀死进程,查看进程,以及运行新进程,同时可以查看进程详细信息4.系统信息,关于系统的信息,如系统版本等5.时间计时,开机时间以及运行时间计算,还有各种小功能6.总代码量在1050行多一点
2023/11/21 2:23:44 11KB 操作系统课设 系统监视
1
参考以上示例程序中建立并发进程的方法,编写一个多进程并发执行程序。
父进程每隔3秒重复建立两个子进程,首先创建的让其执行ls命令,之后创建执行让其执行ps命令,并控制ps命令总在ls命令之前执行。
2023/9/30 14:01:34 6KB
1
实验3进程的管理一、实验内容实验一编写代码,实现以下功能:打印当前所有环境变量的值;
添加新的环境变量NEWENV=first;
修改环境变量NEWENV的值为second;
打印环境变量NEWENV的值。
实验二编写代码实现以下功能:1.打印字符串“helloworld!”2.在打印字符串“helloworld!”前调用三次fork,分析打印结果。
实验三创建子进程1.在子进程中打开文件file1,写入自己的“班级_姓名_学号”,2.父进程读取file1中的内容,并且打印显示。
3.在父进程中获取已经结束的子进程的状态信息,打印该信息,并且打印结束的子进程的进程号。
实验四编写程序实现以下功能:1,在父进程中定义变量n,在子进程中对变量n进行++操作;
并且打印变量n的值,打印子进程pid;
2,在父进程中打印变量n的值,并且打印父进程pid。
3,要求分别用fork和vfork创建子进程
实验五创建子进程一,在子进程中递归打印/home目录中的内容(用exec系列函数调用第二次实验中的代码完成此功能);
1.子进程结束的时候完成以下功能:打印字符串“Childprocessexited!”打印子进程标识符,打印父进程标识符。
2.创建子进程二,打印子进程运行环境中环境变量“USER”的值,通过exec系列中的某个函数设置子进程”USER”环境变量值为“zhangsan”,并且让该子进程完成以下命令:“ls–li/home”.
2023/7/14 2:39:21 43KB linux
1
分别编一个客机程序和服务器程序,首先建立客户程序与服务器之间正确的socket连结,然后利用send和recv函数,客户程序将一个较长的文本文件(如几k字节)中的数据发送给服务器。
要求服务器全部正确地接收到所有的数据(一个也不能少),并将其存入一个文件。
注意,先要传文件的大小(简单的方法是服务器知道文件的大小),服务器方生成子进程后要循环地接受数据,直至文件数据全部收到。
在异种机之间测试程序。
比较服务器收到的文件中的数据和客户机原先文件中数据能否完全相同。
文本文件测试完成后,可再用二进制文件测试。
1.编写一个shell程序findit,该程序搜索参数1指定的目录树,查找所有的以.c和.h结尾的文件,如文件行中含有参数2指定的字符串,显示该行和相应的文件名。
如目录参数1缺省,则从当前目录中搜索。
如:./findit/home/student/wangsearchstring搜索以/home/student/wang为根的目录树中的c程序和头文件,查找含有searchstring字符串的行,显示文件名。
./finditsearchstring从当前目录开始搜索。
请用含有shell特殊字符的字符串模式进一步调试该shell程序。
为了便于查找当前目录或登录目录下如wang目录中的执行文件findit,可以在当前Shell中执行: PATH=.:$HOME/wang:$PATH
2023/3/10 7:58:16 4KB UNIX
1
共 23 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡