之前虽然一直使用property_get函数,但是没有真正了解过,所以写出了这样一个bug

 

char buf[PROPERTY_VALUE_MAX] = {‘\0’};

if(property_get(“debug.property.test”, buf, “0”)) {

ALOGI(“true”);

} else {

ALOGI(“false”);

}

 

结果就是一直打印true

论文网我们看下property_get源码,O版本路径system/core/libcutils/properties.cpp

 

114 int property_get(const char *key, char *value, const char *default_value) {

115 int len = __system_property_get(key, value);

116 if (len > 0) {

117 return len;

118 }

119 if (default_value) {

120 len = strnlen(default_value, PROPERTY_VALUE_MAX - 1);

121 memcpy(value, default_value, len);

122 value[len] = ‘\0’;

123 }

124 return len;

125}

 

错误的使用了default_value,导致返回值永远大于0;

如果想判断有没有这个property,所以正确调用是

if(property_get(“debug.property.test”, buf, NULL) > 0) {

}

上一篇:如何查看端口是否开放
下一篇:LTC莱特币挖矿教程

石中盐

小学低年段儿童开展武术...

初中科学教学方法适用性调查问卷

小学阶段智力障碍儿童的...

系统开发方法

低值易耗品摊销方法

幼儿自我保护认知和方法...

人文關怀护理茬降低老年...

从语境视角看《弗罗斯特诗选》的江枫译本

实践生活教育理论,构建生...

精细化服务茬电力营销中...

三胎政策人们想生什么,...

高校自习室使用情况的调查研究【2465字】

温度自动记录仪在农业上应用设计开题报告

企业會计监督存茬的问题及對策【3588字】

某市新区污水处理厂设计任务书

论述人文關怀茬企业思想...