c++获取U盘序列号

发布时间 2023-08-03 14:32:55作者: 北京开发

 

int getUDiskSerial(std::vector<std::string>& vUsbSerial)
{
       std::string cmd = "lsblk -o \"SERIAL,TRAN\" | grep usb ";
       FILE *fp;
       int len = 0;
       int idx = 0;
       char *str;
       char usb[256];

       memset(usb, 0, 256);
       fp = popen(cmd.c_str(), "r");
       if(fp == NULL)
       {
              printf("\n popen error \n");
              return -2;
       }

       while((str = fgets(usb, 255, fp)) != NULL)
       {
              char *space = strchr(usb, ' ');
              std::string line = usb;
              std::string udisk = line.substr(0, space - usb);
              vUsbSerial.push_back(udisk);
              printf("\n line=%s, udisk=%s, len=%d \n", usb, udisk.c_str(), udisk.length());
              idx++;
              memset(usb, 0, 256);
       }
       pclose(fp);

       return idx;
}