客户端发送请求
客户端设置属性时是调用了property_set(“sys.istest”, “true”)方法。从上述分析可知,该方法实现跟服务器端的property_set方法不同,该方法一定是发送了socket请求,该方法源码位置为:/system/core/libcutils/properties.c:
- int property_set(const char *key, const char *value) {
- return __system_property_set(key, value); }
可以看到,property_set调用了__system_property_set方法,这个方法位于:/bionic/libc/bionic/system_properties.c文件中:
- struct prop_msg {
- unsigned cmd; char name[PROP_NAME_MAX];
- char value[PROP_VALUE_MAX]; };
- typedef struct prop_msg prop_msg;
- static int send_prop_msg(prop_msg *msg) {
- struct pollfd pollfds[1]; struct sockaddr_un addr;
- socklen_t alen; size_t namelen;
- int s; int r;
- int result = -1;
- s = socket(AF_LOCAL, SOCK_STREAM, 0); if (s < 0) {
- return result; }
- memset(&addr, 0, sizeof(addr));
- namelen = strlen(property_service_socket); strlcpy(addr.sun_path, property_service_socket, sizeof(addr.sun_path));
- addr.sun_family = AF_LOCAL; alen = namelen + offsetof(struct sockaddr_un, sun_path) + 1;










