Android 接收uevents-调用uevent_open_socket()后是否缓冲事件?
这个问题大致基于一个测试的源代码,该测试演示了如何接收可用的UEVENT。有关守则如下:Android 接收uevents-调用uevent_open_socket()后是否缓冲事件?,android,linux,udev,Android,Linux,Udev,这个问题大致基于一个测试的源代码,该测试演示了如何接收可用的UEVENT。有关守则如下: int main(int argc, char *argv[]) { int device_fd; char msg[UEVENT_MSG_LEN+2]; int n; int i; device_fd = uevent_open_socket(64*1024, true); if(device_fd < 0) return -1;
int main(int argc, char *argv[])
{
int device_fd;
char msg[UEVENT_MSG_LEN+2];
int n;
int i;
device_fd = uevent_open_socket(64*1024, true);
if(device_fd < 0)
return -1;
while ((n = uevent_kernel_multicast_recv(device_fd, msg, UEVENT_MSG_LEN)) > 0) {
msg[n] = '\0';
msg[n+1] = '\0';
for (i = 0; i < n; i++)
if (msg[i] == '\0')
msg[i] = ' ';
printf("%s\n", msg);
}
return 0;
}
intmain(intargc,char*argv[])
{
int设备_fd;
char msg[UEVENT_msg_LEN+2];
int n;
int i;
设备\u fd=uevent\u open\u插座(64*1024,真);
如果(设备_fd<0)
返回-1;
而((n=uevent_kernel_multicast_recv(device_fd,msg,uevent_msg_LEN))>0){
msg[n]='\0';
msg[n+1]='\0';
对于(i=0;i
我做了两个实验:
uevent\u open\u socket()之后添加了一个sleep(30)
。我运行了这个程序,在30秒的睡眠时间里,我又一次拔掉了一个设备的插头。我的预期行为是看到uevent消息在64*1024
字节缓冲区中得到缓冲,然后在30秒睡眠完成后读取和打印
然而,实际行为是在30秒睡眠后没有收到任何消息