加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 如何在进程结束后自动关闭`qemu`的执行?

发布时间:2020-12-14 02:10:42 所属栏目:Linux 来源:网络整理
导读:打开并显示输出后的qemu窗口在运行pintOS后会自动关闭 就像当我运行命令pintos – 在tcsh shell中运行alarm-multiple时,qemu显示该进程开始,然后一些警报通知然后进程结束,但之后qemu窗口将不会关闭 我想在成功完成系统调用后退出窗口. 解决方法 更新: 新的
打开并显示输出后的qemu窗口在运行pintOS后会自动关闭

就像当我运行命令pintos – 在tcsh shell中运行alarm-multiple时,qemu显示该进程开始,然后一些警报通知然后进程结束,但之后qemu窗口将不会关闭

我想在成功完成系统调用后退出窗口.

解决方法

更新:

新的解决方案

这是另一个更好的解决方案,适用于pintos run …和make grade

在循环之前将此行添加到devices / shutdown.c :: shutdown_power_off(void).

outw( 0x604,0x0 | 0x2000 );

旧的解决方案

对于较新版本的qemu,您需要使用该选项运行它

-device isa-debug-exit

哪个写入IO端口,默认情况下为0x501

即在src / utils目录下的pintos项目中,您需要在run_qemu子例程中的pintos文件中添加一行

sub run_qemu {
    print "warning: qemu doesn't support --terminaln"
       if $vga eq 'terminal';
    print "warning: qemu doesn't support jittern"
       if defined $jitter;
    my (@cmd) = ('qemu-system-i386');

    push (@cmd,'-device','isa-debug-exit'); # <====== add this line
    ..
    ..
    push (@cmd,'-monitor','null') if $vga eq 'none' && $debug eq 'none';
    run_command (@cmd);
}

并在devices目录下的shutdown.c文件中
在for循环之后,在shutdown_power_off函数中添加此行

for (p = s; *p != ''; p++)
    outb (0x8900,*p);

outb (0x501,0x31); // <====== add this line

Qemu的退出代码是值的两倍加一,所以没有办法彻底退出.使用0x31,这将导致qemu退出代码为0x63

最后用-q选项运行pintos

pintos -q run alarm-multiple

>注意:此解决方案不适用于制作等级,请参阅@ pranav3688下面的评论以获得解决方案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读