1、退出快捷键

大家在用Qemu时经常会遇到要退出的情况。一般做法是使用ps或者lsof等命令找出qemu的进程ID,使用KILL命令杀死,该做法相当繁琐。实质上,Qemu已经设计了退出的快捷键:按下ctrl+a,之后按大写X。

2、代码分析

Qemu的所有交互输入时通过字符设备来实现的。具体退出的检查在路径“chardev/char-mux.c”文件的函数mux_proc_byte中。

/* ctrl+a 按键的标志位 */
int term_escape_char = 0x01; /* ctrl-a is used for escape */static int mux_proc_byte(Chardev *chr, MuxChardev *d, int ch)
{if (d->term_got_escape) {d->term_got_escape = 0;if (ch == term_escape_char) {goto send_char;}switch (ch) {case '?':case 'h':mux_print_help(chr);break;/* 如果已经识别到输入了ctrl+a,检查是否输入了x字符。若是,则执行Qemu退出的流程 */case 'x':{const char *term =  "QEMU: Terminated\n\r";qemu_chr_write_all(chr, (uint8_t *)term, strlen(term));qmp_quit(NULL);break;}case 's':blk_commit_all();break;case 'b':qemu_chr_be_event(chr, CHR_EVENT_BREAK);break;case 'c':assert(d->mux_cnt > 0); /* handler registered with first fe *//* Switch to the next registered device */mux_set_focus(chr, (d->focus + 1) % d->mux_cnt);break;case 't':d->timestamps = !d->timestamps;d->timestamps_start = -1;d->linestart = 0;break;}} else if (ch == term_escape_char) {d->term_got_escape = 1;} else {send_char:return 1;}return 0;
}

Qemu退出快捷键和原理解析相关推荐

  1. python 关闭窗口事件_PyQt5 closeEvent关闭事件退出提示框原理解析

    这篇文章主要介绍了PyQt5 closeEvent关闭事件退出提示框原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 如果关闭QWidget, ...

  2. Android 插件化原理解析——Activity生命周期管理

    之前的 Android插件化原理解析 系列文章揭开了Hook机制的神秘面纱,现在我们手握倚天屠龙,那么如何通过这种技术完成插件化方案呢?具体来说,插件中的Activity,Service等组件如何在A ...

  3. 爱加密Android APk 原理解析

    转载请标明出处:http://blog.csdn.net/u011546655/article/details/45921025 爱加密Android APK加壳原理解析 一.什么是加壳? 加壳是在二 ...

  4. java实现顺序栈_Java实现顺序栈原理解析

    这篇文章主要介绍了java实现顺序栈原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 什么是栈 1.栈的英文是stack 2.栈是一个先入后出 ...

  5. easy excel date 类型解析报错_ptarchiver原理解析

    pt-archiver原理解析 作为MySQL DBA,可以说应该没有不知道pt-archiver了,作为pt-toolkit套件中的重要成员,往往能够轻松帮助DBA解决数据归档的问题.例如线上一个流 ...

  6. 【Nginx那些事】nginx原理解析

    [Nginx那些事]系列 [Nginx那些事]nginx 安装及常用指令 [Nginx那些事]Nginx 配置文件说明 [Nginx那些事]nginx原理解析 [Nginx那些事]nginx配置实例( ...

  7. LDA主题模型原理解析与python实现

    本文转自:LDA主题模型原理解析与python实现_wind_blast的博客-CSDN博客   python实现: #-*- coding:utf-8 -*- import logging impo ...

  8. handle原理解析

    handle原理解析 1.首先Looper.prepare()在本线程中保存一个Looper实例,然后该实例中保存一个MessageQueue对象:因为Looper.prepare()在一个线程中只能 ...

  9. 秋色园QBlog技术原理解析:UrlRewrite之URL重定向体系(四)

    2019独角兽企业重金招聘Python工程师标准>>> 文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技 ...

最新文章

  1. keepalived + haproxy 实现web 双主模型的高可用负载均衡--转
  2. C++中的抽象类以及接口的区别联系
  3. linux的程序员计算器,linux中的计算器
  4. 需求分析——使用类图建模
  5. 【电子签章】HTML格式合同转化成PDF文件 已下载
  6. matlab设计激光腔,激光原理课程设计
  7. java基础----集合操作---实例----List集合的初始化
  8. RS485通信原理图及程序实例详解
  9. Java下载及环境配置
  10. 美妆类短视频如何定位?可以考虑三个方向,吸粉引流指日可待
  11. Excel可视化:1个思路学会7种变形柱形图
  12. ios适配iPhone和iPad
  13. ES数据库重建索引——Reindex(数据迁移)
  14. 完美解决:调用sklearn出现诸如ImportError: cannot import name ‘LogisticR‘ from ‘sklearn.linear_model‘ (D:\Progr
  15. 【天光学术】新闻学论文:校园网络流行语传播社会热点问题的途径(节选)
  16. 印象笔记html标签删除吗,我用了9年印象笔记,打算彻底放弃,直到……
  17. MySQL常用命令与函数
  18. sendgrid_使用SendGrid处理传入的电子邮件
  19. python速度比较_列表与元组的速度比较
  20. 基于ffmpeg+opengl+opensl es的android视频播放器

热门文章

  1. 使用Python语言制作贪吃蛇游戏,并制作成为exe可执行文件
  2. 最基本的排序方法--C语言
  3. Win10用cmd强制卸载软件
  4. smb.conf 详解
  5. mysql 两种存储引擎 MyISAM 和InnoDB
  6. 元宇宙,现状,路径与未来
  7. java多线程复习与巩固(五)
  8. Adobe Flash Builder的强大功能--移动设备控制桌面Apps
  9. 几何平均数与算数平均数
  10. 毕业论文怎么写-本科专科