【问题标题】:C++ - Ensuring Hard Disk (Drive) Is Not Idle During Program ExecutionC++ - 确保硬盘(驱动器)在程序执行期间不空闲
【发布时间】:2012-12-29 05:41:54
【问题描述】:

我有几个问题:

  1. 以下 C++ 代码是否会在经过一定时间后导致我的硬盘空闲?

    #include <stdio.h>
    
    int main()
    {
        while(1);
    }
    
  2. 如果是这样,我可以在此代码中添加什么以确保我的硬盘在执行期间不会空闲?

  3. 是否有办法通过 C++ 代码检查我的硬盘是否处于空闲状态?

注意:我使用的是 Windows 7

【问题讨论】:

  • 你能定义空闲吗?我认为您的意思是A.根本不旋转,对吗?怠速的另一种用法是指 B.“运行但无用”,即汽车在发动机运转时怠速运转,但没有运动——发动机在运转,但没有运动。你是说A还是B?无论如何,您只针对您的程序提出问题,对吗? IE。您无法控制操作系统或其他程序是否无法运行您的硬盘。

标签: c++ windows hard-drive python-idle


【解决方案1】:
  1. 如果启用了空闲,则可以,因为它不会访问硬盘驱动器。
  2. 什么都没有;您的代码甚至可能无法从硬盘运行。即使您添加代码来读取一些数据,它也可能会被缓存并且不会触及磁盘。您可能可以先写入然后刷新,以确保将数据提交到磁盘,但这会在刷新期间阻塞您的程序(而且这种方法也不可靠。)
  3. 可能您可以使用 SMART 左右进行检查,但请记住,您的程序可能不在硬盘驱动器上运行 - 可能在 SSD 上,可能通过网络,可能来自 RAM 磁盘。

一般来说,您不应该在您的程序中包含这样的假设。如果您需要触摸磁盘并且您担心硬盘驱动器可能会关闭并需要很长时间,请要求用户禁用硬盘驱动器睡眠。对于服务器应用程序,这很可能不是问题,因为驱动器始终在运行。对于 SSD 和其他东西,无论如何这都不是问题,因为这些驱动器不会从空闲状态“旋转”。

【讨论】:

  • 我想补充一点,假设当前没有其他程序使用硬盘驱动器正在运行该程序将导致硬盘在您设置的时间后进入空闲状态(如果您设置了一个) 让司机通过power management闲置。
  • 关于数字 2,我不太确定这是正确的答案,在 windows API 或其他一些用于手动设置计时器的 API 中可能存在一个不太知名的功能将 disk_idle 设置为零 - 从而导致磁盘从未设置为空闲状态 -。
  • 对,可能有一些电源管理 API 调用,但我不建议调用。首先,它可能需要管理权限,其次,组策略可能会覆盖您在本地设置的任何内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-06
  • 2011-06-26
  • 2015-10-25
  • 2014-02-26
  • 2023-03-31
  • 2012-08-07
  • 1970-01-01
相关资源
最近更新 更多