- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个运行 Ubuntu 12.4.1 的街机鸡尾酒柜(没有键盘,只有一个操纵杆和按钮),当按下电源按钮时会出现一个弹出窗口并且系统正常关闭,但是当我的全屏游戏启动器菜单应用程序正在运行,然后按下按钮无效。我想在按下按钮时捕获事件,以便我的应用程序可以触发系统关闭。我的菜单应用程序是用 C++ 编写的,并且使用的是 SDL。关于如何捕获电源关闭按钮按下事件的任何想法?
感谢那些回复的人,这是我用来让它工作的实际代码:
类(class)成员:
int m_acpidsock;
sockaddr_un m_acpidsockaddr;
设置代码:
/* Connect to acpid socket */
m_acpidsock = socket(AF_UNIX, SOCK_STREAM, 0);
if(m_acpidsock>=0)
{
m_acpidsockaddr.sun_family = AF_UNIX;
strcpy(m_acpidsockaddr.sun_path,"/var/run/acpid.socket");
if(connect(m_acpidsock, (struct sockaddr *)&m_acpidsockaddr, 108)<0)
{
/* can't connect */
close(m_acpidsock);
m_acpidsock=-1;
}
}
更新代码:
/* check for any power events */
if(m_acpidsock)
{
char buf[1024];
int s=recv(m_acpidsock, buf, sizeof(buf), MSG_DONTWAIT);
if(s>0)
{
buf[s]=0;
printf("ACPID:%s\n\n",buf);
if(!strncmp(buf,"button/power",12))
{
setShutdown();
system("shutdown -P now");
}
}
}
关闭套接字代码:
if(m_acpidsock>=0)
{
close(m_acpidsock);
m_acpidsock=-1;
}
最后,我需要允许非 root 用户关闭并且使用此行工作:
sudo chmod u+s /sbin/shutdown
最佳答案
您可以只启动一个线程来读取/proc/events/acpi
,并在那里解码消息。
但是如何使用 acpid
来做到这一点呢?您将收听 /var/run/acpid.socket
,当收到您关心的消息时,执行您必须执行的操作。
参见: http://www.linuxmanpages.com/man8/acpid.8.php
我希望这是有用的。
关于c++ - 如何检测用户何时按下电源关闭按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14025794/
是否可以通过编程方式关闭 iPhone,或者 Apple 不允许这样做? 如果 Apple 不允许这样做,是否可以通过编程方式将 iPhone 静音? 最佳答案 您使用官方 SDK 创建的 iPhon
我目前正在使用 Phonegap Build (3.7) 构建一个简单(但有用)的移动应用程序。 我正在制作的应用程序需要模拟信息亭模式类型的应用程序,因此该设备将仅与该应用程序一起使用,而不会用于其
当使用 numpy.power(2,N) 时,N 是一个整数,我遇到了以下问题: In[1] np.power(2,63) Out[1] -9223372036854775808 RuntimeWar
我的老板想从 Reporting Services 切换到 Power View,但他想知道您可以在 SSRS 中执行的所有操作是否首先在 Power View 中可用。 我立即注意到的一件事是我无法
我希望当我的应用程序运行时,电源按钮(按下时锁定屏幕并且屏幕变黑)应该被禁用。使用户无法锁定屏幕。 我在三星 Galaxy S 手机的默认相机应用程序中注意到了这个东西。这就是我尝试做同样的事情的原因
我有包含字段 Amount, Condition1, Condition2 的表格。 例子: Amount Condition1 Condition2 ---------------------
我正在计算给定时间范围内每月唯一 ID 的数量,但我遇到了两件奇怪的事情: 1. 寻找相同的东西,但使用两种不同的方法(每个月的值和逐月的累积值)给出不同的值。请参阅下面的屏幕截图。 2.当您在第一列
是否可以使用 Linux 手动打开/关闭 USB 电源? 有一个外部 USB 冷却风扇(你用来冷却自己的那种,而不是 PC),如果能够从终端控制它会很好,因为我想把风扇放在很远的地方。 我想这对其他各
我刚刚开始使用 Power Bi,现在我需要一些帮助。 我需要一个公式来创建一个使用以下逻辑的新列(在下面的示例图片中称为“组合”): 在每个 ParentID 上构建 Current 列的总和 如果
我在 Power BI 的 Power Query 编辑器中运行 Python 脚本来转换和处理我的数据。在这些计算之后,我想将数据集和另一个表返回到 Power Query 编辑器。我是否正确认为第
我想为 Linux 上的 GPU 设备关闭“真正的”PCIe 电源。我找到了一些主页,但它们无法切断“真实”的力量。 我监测了交流电的使用情况,但所有这些都无法减少实际用电情况。你能告诉我如何关闭设备
我在使用 PowerShell 脚本通过 Power BI rest api 更新数据集参数时遇到了一些困难。 我的脚本基于这些资源: https://learn.microsoft.com/en-u
如何使用使用两个现有表作为输入的 Python 脚本创建新表?例如通过执行 left join使用 pandas merge ? 部分详情: 使用 Home > Edit queries您可以在 Tr
由于数据的 secret 性,我将尝试使用一些随机示例来描述我正在努力解决的问题。假设我在 Power BI 中有一个包含发票数据的事实表。我需要计算过去 12 个月销售额超过 50,000 欧元的不
我专门尝试使用 Power Query 编辑器将 Column A 中的字符串:yyyymmdd 转换为 dd/mm/yyyy 日期格式电源 BI。我已经可以使用以下公式在 Excel 中执行此操作:
我有一个方法: public class MarginConverter { int top = 0; int bottom = 0; int right = 0; i
这个问题衍生出了我之前发布的一个问题; Custom x-axis values in Power BI 假设以下数据集: 专注于第二排和第三排。我怎样才能使下面相应图表中的线是连续的而不是停在中间?
我是一名优秀的程序员,十分优秀!