当 Linux 系统休眠并从休眠中恢复时,我认为内核需要知道它正在恢复,而不是引导。否则,内核将启动通常的引导过程,并且不会加载交换的数据。内核如何知道它正在恢复?
起初,我以为GRUB(或其他引导加载程序)通过内核参数告诉内核。但是只要我查看/proc/cmdline,内核参数就和平时一样了。内核是否有任何机制知道它正在恢复?
当 Linux 系统休眠并从休眠中恢复时,我认为内核需要知道它正在恢复,而不是引导。否则,内核将启动通常的引导过程,并且不会加载交换的数据。内核如何知道它正在恢复?
起初,我以为GRUB(或其他引导加载程序)通过内核参数告诉内核。但是只要我查看/proc/cmdline,内核参数就和平时一样了。内核是否有任何机制知道它正在恢复?
我想制作一个 shell 脚本来复制 GUI 终端仿真器的过去输出(例如,最后 20 行)。动机如下:
当我执行一个需要很长时间的程序时(例如,下载一个非常大的文件,或者转换一个非常大的电影文件),我有时会想起另一个工作,我不得不离开房间。在这种情况下,我按 ctrl+z 停止该过程。我输入
fg; echo $? >> log.txt; date >> log.txt; systemctl poweroff
然后我离开房间。
这种方式有效而且还不错。但它有一个缺点,我无法读取程序的输出。我只能知道状态($?)。所以我想复制最后 20 或 40 行并将它们保存在日志文件中。
我正在制作一个包含数字时钟的 X 应用程序。时钟以“hh:mm”的格式显示当前时间。我想掌握 Xlib,所以我只想使用 Xlib(没有其他工具包)。
时钟必须每分钟刷新一次。为了时钟的刷新,我想出了三个实现,但我无法判断哪个是最好的。请告诉我哪个是最好的。而且,如果有其他更好的实现,请告诉我。
第一个实现从事件循环内部刷新时钟。第二和第三个实现从事件循环外部刷新时钟。
第一个实现如下:在事件循环中,我使用 XEventsQueued 或 XPending 来知道剩余事件的数量。如果仍然没有事件,请检查当前时间,如果自上次刷新后已过去 1 分钟或更长时间,我会刷新时钟。如果还有一些事件,我会处理其他窗口事件。
第二种实现如下:我使用setitimer,间隔为1分钟。信号处理程序捕获 SIGALRM 并刷新时钟。
第三种实现如下:我使用pthread。线程函数刷新时钟并休眠 1 分钟,并且永远做同样的事情。
第一个实现是最简单的。但我怕它频繁重复事件循环并消耗CPU功率。