当前位置:网站首页>基于Qt开发实现的任务管理器
基于Qt开发实现的任务管理器
2022-06-11 14:05:00 【biyezuopinvip】
资源下载地址:https://download.csdn.net/download/sheziqiong/85610792
TaskManager
采用qt creator在unbuntu14.04环境下开发的任务管理器
1.实验设计
1.1.整体设计
系统划分为如下几个模块:
系统信息模块,包含的功能有:
- 获取并显示主机名;
- 获取并显示系统启动的时间;
- 显示系统到目前为止持续运行的时间;
- 显示系统的版本号;
- 显示cpu的型号和主频大小。
进程信息模块,包含的功能有:
- 通过pid或者进程名查询一个进程,并显示该进程的详细信息,提供杀掉该进程的功能;
- 显示系统所有进程的一些信息,包括pid,ppid,占用内存大小,优先级等等。
性能模块,包含的功能有:
- cpu使用率的图形化显示;
- 内存和交换分区(swap)使用率的图形化显示。
状态栏模块,包含的功能有:
- 在状态栏显示当前时间;
- 在状态栏显示当前cpu使用率;
- 在状态栏显示当前内存使用情况。
运行新进程模块,包含的功能有:
- 用新进程运行一个其他程序。
关机模块,包含的功能有:
- 关机、重启、挂起功能。
1.2.详细设计
系统信息模块、进程信息模块和性能模块显示在一个Tab Widget控件中,用槽函数on_tabWidget_currentChanged响应页面变化事件,该函数中调用show_tab_info函数来根据当前的页面号调用不同的函数刷新界面;状态栏模块显示在状态栏中;运行新进程模块和关机模块显示在菜单栏中。
- 系统信息模块
该模块对应的函数是show_system_info,该函数中都是先读取相应文件中相应字段的信息,然后显示在相应的Label控件中。其中系统启动时间是由系统当前时间减去系统持续运行时间算出来的。 - 进程信息模块
该模块对应的函数是show_process_info,该函数通过读取/proc目录下所有数字文件夹下的stat文件中相应的字段内容获取所有进程的信息,然后将这些内容显示在TableWidget控件中。
查询功能对应的槽函数为on_pushButton_Search_clicked,当查询按钮按下时就会执行该函数。该函数首先读取查询按钮左边的LineEdit控件中输入的内容,然后将其与TableWidget中的前两列即pid和进程名对应的列中的内容进行对比,如果有相同的,则定位到该行,反之,用消息提示框提示用户查询的进程不存在。
刷新功能对应的槽函数是on_pushButton_Refresh_clicked,该函数就是调用了show_tab_info函数将当前tab页面刷新了。
结束进程功能对应的槽函数是on_pushButton_KillPro_clicked,该函数中首先获取当前选中的行对应的pid,然后用system函数使用系统命令“kill pid ”结束选定的进程。 - 性能模块
该模块对应的函数是show_capability,在该函数中主要是计算当前cpu、内存和交换分区的使用率,然后调用update函数触发paintEvent函数利用获得的数据绘制图像。由于图像需要动态刷新,所以利用定时器让show_capability函数每隔1s就被调用一次。
paintEvent函数中利用QPainter类在pixmap类上作图,用全局的数组pts来存储show_capability函数中计算出的cpu、内存和交换分区的使用率。而且需要动态调整pts数组中的数据:当曲线到达窗口最左端的时候就舍弃最前面的一个点;当窗口宽度变大时就扩大pts数组的长度;当窗口宽度变小时,先判断当前宽度能否容纳现有的数据,若能,则减小pts数组的长度,若不能,则舍弃前面不能绘制的点。为了让纵坐标变化时图形也不变形,pts数组中存储的是纵坐标的比例,当绘制图形时再乘以当前图像的高度。 - 状态栏模块
该模块需要动态刷新,所以用定时器每1s刷新一次,对应的槽函数为time_out_update_status_bar,当前时间是通过time函数获取的,cpu使用率和内存使用情况使用的是性能模块中的show_capability函数中计算出来的结果,最后调用StatusBar的showMessage函数显示信息。 - 运行新进程模块
该模块对应的函数是on_action_triggered,该函数中首先调用QFileDialog::getOpenFileName显示文件对话框,当用户选中文件后返回文件的路径。然后根据路径判断该文件是不是可执行文件,若是,则利用fork和execv函数运行该程序;若不是,则用的对话框提示用户。 - 关机模块
该模块对应的函数为on_action_3_triggered、on_action_4_triggered、on_action_5_triggered,分别对应关机、重启、挂起功能。关机命令是shutdown -h now或halt;重启命令是shutdown -r now或reboot;挂起命令是rtcwake -m mem -s time,该命令中可以让用户选择挂起多长时间。这三个功能都需要root权限。
2.实验结果
系统信息模块
该模块的运行结果如图1所示。
图 1
进程信息模块
该模块的运行结果如图2所示。当输入CD,并点击查询后,焦点定位到该进程所在的行,如图2所示。
图 2
然后点击结束进程按钮,系统弹出提示框,如图3所示。
图 3
选择yes,出现如图4所示对话框,表明已杀死该进程。
图 4
点击yes,发现进程总数减少了1个,如图5所示。
图 5
再次查询CD,系统提示该进程不存在,如图6所示。
图 6
性能模块
该模块的运行结果如图7所示,放大后的效果如图8所示。
图 7
图 8
图 9
- 运行新进程模块
该模块在菜单上的运行结果如图10所示。
图 10
点击新建任务,出现如图11所示的对话框。
图 11
选中TaskManager,发现又有一个任务管理器运行,如图12所示。
图 12
若选择一个不可执行文件,出现如图13所示的错误提示。
图 13
- 关机模块
该模块在菜单栏上的运行结果如图14所示。
图 14
为测试这三个功能,需要在终端先进入该进程所在的目录,然后输入sudo TaskManger。这时若选择关机,则系统关机;若选择重启,则系统重启;若选择挂起,则弹出如图15所示对话框,点击ok后系统会挂起用户选择的时间长度。
图 15
资源下载地址:https://download.csdn.net/download/sheziqiong/85610792
边栏推荐
- Hashicopy之nomad应用编排方案06(配置task)
- 2022年全国最新消防设施操作员(初级消防设施操作员)题库及答案
- Kubernetes binary installation (v1.20.16) (V) verifying master deployment
- 高比例风电电力系统储能运行及配置分析(Matlab实现)
- tf. Data (II) -- parallelization tf data. Dataset generator
- /usr/bin/gzip: 1: ELF : not found /usr/bin/gzip: 3: : not found /usr/bin/gzip: 4: Syntax erro
- CVPR 2022 | 神经辐射场几何编辑方法NeRF-Editing
- Huawei HECs ECS is used to build a telegraf+influxdb+grafana monitoring system [Huawei cloud to jianzhiyuan]
- Ali talked about the use of strategic mode in the project
- Hamad application scheduling scheme 06 of hashicopy (configure task)
猜你喜欢

How to quickly compress the size of video?

【Try to Hack】URL

无延时/无延迟视频直播实例效果案例

全球手机市场衰退,连苹果也对iPhone14不抱过高期待

Leetcode 1968. 构造元素不等于两相邻元素平均值的数组(可以,终于解决)

NoSQL之Redis配置与优化

Operating instructions for communication between RS485 (Modbus RTU) industrial RFID reader ck-fr03-a01 and PLC Mitsubishi fx5u

2022年全国最新消防设施操作员(初级消防设施操作员)题库及答案

Vi LXD deployment of lab server for development records

强大的全文本搜索工具——AnyTXT Searcher
随机推荐
2022.2.26 library management system 2 - module 2: reader management system
Tp6 whoops based exception takeover (beautiful interface)
[acwing 237. program automatic analysis] parallel search + discretization
[the path of system analyst] collection of wrong topics of system analyst
Energy storage operation and configuration analysis of high proportion wind power system (realized by Matlab)
为什么每运行一部都显示一次数据库已存在,都要删除数据库,然后才能成功,每运行一部都要删除一次数据库,重新运行整体才成功.
d的each与map不一致
airtest自动化测试
How to learn to spend money
Kubernetes certificate collection
风电随机性动态经济调度模型(Matlab代码实现)
sqlmap检测SQL-lab靶场
可变参表达式
create_ Error in engine MySQL connector encryption method
tf.data(二) —— 并行化 tf.data.Dataset 生成器
Is the securities account opened in qiniu safe? How to apply for a low commission stock account?
2022工具钳工(中级)操作证考试题库及答案
非常值得学习的调度开源库推荐
Ecplise cannot connect to SQL Server
在启牛开的证券账户安全吗?如何申请低佣金的股票账户?