Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 接收uevents-调用uevent_open_socket()后是否缓冲事件?_Android_Linux_Udev - Fatal编程技术网

Android 接收uevents-调用uevent_open_socket()后是否缓冲事件?

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;

这个问题大致基于一个测试的源代码,该测试演示了如何接收可用的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;
    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消息

  • 我在
    uevent\u open\u socket()之后添加了一个
    sleep(30)
    。我运行了这个程序,在30秒的睡眠时间里,我又一次拔掉了一个设备的插头。我的预期行为是看到uevent消息在
    64*1024
    字节缓冲区中得到缓冲,然后在30秒睡眠完成后读取和打印

    然而,实际行为是在30秒睡眠后没有收到任何消息

  • 这给我提出了几个问题:

  • 消息是否已缓冲
  • 如果是,缓冲策略的性质是什么,它导致消息被完全丢弃而不被接收
  • 如果不是的话,在假设的场景中,消息生成的频率高于接收和处理的频率,那么消息不一定会被丢弃吗