热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

OpenHarmony(10)——“续下命”,然后还可以再挣扎一段时间

OpenHarmony3.0出来很久了,之前也研究了一点,主要是想从头开始,从linux启动init进程开始了解OpenHarmony&#

OpenHarmony3.0出来很久了,之前也研究了一点,主要是想从头开始,从linux启动init进程开始了解OpenHarmony(linux版)。

        之前的一点研究 OpenHarmony: 了解OpenHarmony并移植再使用的记录 (gitee.com)

这里提一点,一开始以为xx_lite 方式比较合适,见README_learn.md,在研究了解并按自己想法改写(init作为主要程序,其他service以.so方式加载)时遇到一个fchmodat BUG问题

    uid_t uid = getuid();
    struct passwd *pswd = getpwuid(uid);
    gid_t gid = getgid();
    struct group *grp = getgrgid(gid);
    INIT_LOGI(">>>###<<pw_name, gid, grp->gr_name);
    
    uid &#61; geteuid();
    pswd &#61; getpwuid(uid);
    gid &#61; getegid();
    grp &#61; getgrgid(gid);
    INIT_LOGI(">>>###<<pw_name, gid, grp->gr_name);

    pswd &#61; getpwuid(sockopt->uid);
    grp &#61; getgrgid(sockopt->gid);
    INIT_LOGI(">>>###<<                 addr.sun_path, sockopt->uid, pswd->pw_name, sockopt->gid, grp->gr_name);


    if (fchmodat(AT_FDCWD, addr.sun_path, sockopt->perm, AT_SYMLINK_NOFOLLOW)) {
        unlink(addr.sun_path);
        close(sockopt->sockFd);

init_lite fchmodat 95 操作不允许&#xff0c;为何不行&#xff1f;euid还是0root&#xff0c;设置1036logd权限还不行&#xff1f;

原因见 宋宝华 的 Linux阅码场 - Linux内核月报(2020年09月)_宋宝华的博客-CSDN博客

尝试文中提及的修复方式&#xff0c;但由于工具链libc库问题&#xff0c;无法实现。

于是更改方向&#xff0c;研究xxx_standard&#xff0c;见README.md

学习了Parcelable二进制序列化&#xff08;真的够语言底层&#xff0c;了解真实的数据存储结构&#xff09;&#xff0c;改写出简单&#xff08;只分配一个page&#xff0c;使用中不够时再增加&#xff09;的IPC binder 通信机制。

C相关的内容&#xff0c;我都能一点点研究&#xff08;抠&#xff09;出来&#xff0c;

然后到了ACE JS运行环境初始化&#xff0c;需要quickjs flutter

这些对于一个C用户来说&#xff0c;想要了解清楚机制并使用起来还是很有难度的。

OpenHarmony之路暂时卡在这里了。。。。。。


推荐阅读
author-avatar
刘刘刘刘
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有