zoukankan      html  css  js  c++  java
  • android init执行service的脚本code位置

     在service.cpp中的Start()调用ExpandArgsAndExecv()

    system/core/init/service.cpp

    static bool ExpandArgsAndExecv(const std::vector<std::string>& args) {
        std::vector<std::string> expanded_args;
        std::vector<char*> c_strings;
    
        expanded_args.resize(args.size());
        c_strings.push_back(const_cast<char*>(args[0].data()));
        for (std::size_t i = 1; i < args.size(); ++i) {
            if (!expand_props(args[i], &expanded_args[i])) {
                LOG(FATAL) << args[0] << ": cannot expand '" << args[i] << "'";
            }
            c_strings.push_back(expanded_args[i].data());
        }
        c_strings.push_back(nullptr);
    
        return execv(c_strings[0], c_strings.data()) == 0;
    }
    以下面的reboot service为例,ExpandArgsAndExecv()函数args参数为:
    /system/bin/sh /system/bin/recovery_test.sh
    # service for reboot                                                       
    service reboot /system/bin/sh /system/bin/recovery_test.sh
        class core                                                               
        console                          
        oneshot                                
        group system audio drmrpc                                          
  • 相关阅读:
    大佬讲话听后感
    P1226快速幂取余
    对拍
    P1017 进制转换
    P1092 虫食算 NOIP2002
    P1003 铺地毯
    P1443 马的遍历
    P1032 字串变换
    P1379 八数码问题
    2-MAVEN 基本命令
  • 原文地址:https://www.cnblogs.com/aspirs/p/12532114.html
Copyright © 2011-2022 走看看