首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    深入理解Android中的startActivity过程

    以下是这个过程的详细步骤: Launcher进程发起startActivity请求:当用户点击桌面App图标时,Launcher进程会通过Binder IPC向system_server进程发起startActivity...准备工作完成后,system_server进程会通过Binder IPC向App进程发送scheduleLaunchActivity请求。...当AMS需要创建、暂停、恢复或销毁一个Activity时,它会通过Binder IPC向应用程序进程发送相应的请求。ApplicationThread会接收到这些请求,并调用相应的方法来处理这些请求。...当AMS需要创建、暂停、恢复或销毁一个Activity时,它会通过Binder IPC向应用程序进程发送相应的请求。...当AMS或其他组件需要与UI线程通信时,可以通过向mH发送消息来实现。

    1.7K10

    NPAPI插件开发学习:Webkit的插件机制

    当plugin进程创建成功时,browser进程会返回IPCchannel handle用于创建和plugin进程通讯的PluginChannelHost. 那它什么时候被销毁呢?...Browser进程通过PluginProcessHost发送消息调用Plugin进程的函数,响应动作由PluginThread完成。...当在plugin进程调用这些函数时,chromium会覆盖PluginHost的部分函数,而这些新的callback函数会调用NPObjectProxy来通过IPC发送请求到renderer进程。...## Window和windowless插件 可以通过设置”embed”或者”object”元素的属性。两者的区别主要在于绘图的方式不同。...(h&cc): 实现WebKit::npapi::WebPlugin接口,把插件的调用通过IPC发送给renderer进程 content/plugin/webplugin_delegate_stub

    2.5K40

    Electron 进程通信

    主进程通过实例化 BrowserWindow,每个 BrowserWindow 实例都在它自己的渲染进程内返回一个 web 页面。当 BrowserWindow 实例销毁时,相应的渲染进程也会终止。...在主进程中,通过 ipcMain 模块设置监听 asynchronous-message 和 synchronous-message 两个事件,当渲染进程发送时就可以针对不同的事件进行处理。...因此,event.sender 发送的消息在主进程中还是需要通过 ipcMain.on 方法来监听,而不是通过 webContents.on 方法。 2....Object name: "123"__proto__: Object' 从渲染进程输出的消息可以看到,主进程将返回值调用 toJSON 后传递给渲染进程。...remote 远程对象 通过 remote 对象,我们可以不必发送进程间消息来进行通信。

    2.2K10

    【Linux系统编程】(三十三)System V 共享内存精讲:Linux 最快 IPC 的原理与实战精髓

    1.1 传统 IPC 的性能瓶颈:两次拷贝 + 内核中转 无论是匿名管道、命名管道,还是消息队列,进程间的通信都离不开内核的中转,数据至少会经历两次内存拷贝: 进程→内核:发送进程将数据从自己的用户态地址空间...key 值通常由ftok() 函数生成,该函数通过一个已存在的文件路径和一个整型项目 ID,生成唯一的 key 值,原型如下: // 功能:生成System V IPC的键值 // 参数: // pathname...,无任何内核中转,效率极高; 页对齐分配:共享内存大小设为 4096 字节(页大小),避免内核向上对齐导致的内存浪费; 显式销毁:服务端作为发起者,负责销毁共享内存,避免内存泄漏; 同步问题:本案例通过...8.6 坑 6:使用 IPC_CREAT|IPC_EXCL 时,未处理共享内存已存在的场景 问题:服务端使用IPC_CREAT | IPC_EXCL创建共享内存时,若共享内存已存在,shmget...会失败,若未处理该错误,程序会直接退出; 解决方案: 检测 shmget 的错误码,若为 EEXIST(文件已存在),先通过ipcrm删除残留的共享内存,再重新创建; 或在程序启动时,

    62310

    今年的OffensiveCon大会议题质量不错(附资料下载)

    AppCache位于沙盒之外的高权限进程browser,沙盒内低权限的renderer进程通过发送IPC消息与browser进程交互的,当AppCache出漏洞时,就有可能逃逸出沙盒。...在调用AppCacheGroup::RemoveCache清除缓存时,newest_complete_cache_指向的是被销毁的对象,所以后面才要把它置空,但在销毁之前调用了CancelUpdate...该议题主要介绍VirsualBox 3D加速器的攻击面和漏洞利用,由于VBox是开源的,因此可以直接使用AFL 去Fuzzing,fuzz目标就是通过发送畸形chromium messages来触发漏洞...他们应该是自己写个构造发送消息的程序,输入文件即chromium messages内容,样本可能是收集550操作码的信息去构造,也可能通过hook去直接抓取真实数据作为样本,然后用 afl去跑。...只是这里作者又写了个USB内核模块,方便通过用户层发送USB消息去测试。 作者还专门搞了个树莓派来重现漏洞,演示通过USB去让Windows/Linux系统崩溃。

    1.5K20

    System V IPC原理与性能实测

    2.解除绑定 如果进程退出时没有解除绑定,共享内存段仍然会保留在系统的共享内存资源中,直到显式删除(通过 shmctl 或系统重启)。...3.销毁共享内存 共享内存不会随程序的结束而销毁,它是随内核的,因此需要显式地进行销毁,可以使用shmctl函数。或在命令行中使用指令进行销毁。...参数cmd:需要传入一个操作选项,操作选项很多,而IPC_RMID就是用来销毁共享内存的。...返回值: 成功时返回 0。 失败时返回 -1,并设置 errno 以指示错误类型。 注:命令行销毁和程序中销毁效果是一样的,因为命令行销毁底层还是调用了shmctl函数。...2.共享内存段被标记为已删除,但仍有进程附加(shmat) 共享内存段已经被标记为已删除(不能附加到新的进程),但之前仍有一些进程附加到该共享内存段并正在使用。

    48710

    Electron 开发实战(四):深入进程通信 IPC 全解(安全通信+多窗口互通)

    通信模型:主进程→渲染进程(主动推送)4.3.1实现原理主进程无法直接推送消息,需要通过窗口实例的webContents对象向对应渲染进程发送消息,精准定向目标窗口。...引用来源:Electron上下文隔离官方安全规范4.4.1核心安全配置生产环境强制开启两大安全配置,默认新版Electron已开启,禁止手动关闭:contextIsolation:true(上下文隔离)...必须通过contextBridge精准、按需暴露API,杜绝全局权限泄露。...4.5.1多窗口通信原理每个BrowserWindow实例都拥有独立的webContents属性,我们可以通过窗口实例唯一标识,定向向指定窗口发送消息,也可以实现全局广播。...:窗口关闭时移除对应IPC监听,防止内存泄漏通道命名规范化:按业务、窗口维度命名通道,如main/child/update,避免通道冲突本章总结本章彻底吃透Electron核心IPC进程通信机制,从基础

    21710

    深入探索进程间通信:System V IPC的机制与应用

    返回值 成功时,shmdt 函数返回 0。 失败时,返回 -1,并设置相应的错误码。 使用说明 在调用 shmdt 函数之后,进程将不再能够通过该指针访问共享内存段。...但是,请注意,shmdt 并不销毁共享内存段本身;要销毁共享内存段,需要使用 shmctl 函数并指定 IPC_RMID 命令。...2.6 使用命令释放共享内存资源 ipcrm [-m|-q|-s] shmid 功能:删除已存在的IPC资源对象,包括共享内存、消息队列、信号量集。 2.7....3 消息队列的原理与概念 1.消息队列:一种进程间通信(IPC)的机制,允许多个进程通过发送和接收带有类型的数据块(消息)进行通信,这些消息在队列中按照先进先出(FIFO)的顺序存储...4.发送方和接收方通过使用相同的key值来创建或获取消息队列,它们就可以访问到同一个消息队列,从而实现进程间通信。消息队列特别适用于异步消息传递和任务队列等场景。

    1.4K10

    android基础部分再学习---再谈Service进程服务通信

    当最后一个客户端解除绑定后,系统会销毁服务(除非服务同时是通过 startService() 启动的)。 当你实现自己的bound服务时,最重要的工作就是定义onBind() 回调方法所返回的接口。...mBound) return; // 创建并向服务发送一个消息,用到了已约定的'what'值 Message msg = Message.obtain(null, MessengerService.MSG_SAY_HELLO...调用bindService(),传入已实现的ServiceConnection。 当系统调用你的onServiceConnected()回调方法时,你可以利用接口中定义的方法开始对服务的调用。...当客户端被销毁时,与服务的绑定也将解除。但与服务交互完毕后,或者你的activity进入pause状态时,你都应该确保解除绑定,以便服务能够在用完后及时关闭。...(resume时),所以服务也许在销毁后马上就要重建。

    1.4K30

    Android Binder 设计篇

    --- BC_REQUEST_DEATH_NOTIFICATION 获得Binder引用的进程通过该命令要求驱动在Binder实体销毁得到通知。...例如当Server把Binder实体传递给Client时,在发送数据流中,flat_binder_object中的type是BINDER_TYPE_BINDER,binder指向Server进程用户空间地址...下表总结了当flat_binder_object结构穿过驱动时驱动所做的操作: 表 7 驱动对flat_binder_object的操作 Binder 类型( type 域) 在发送方的操作 在接收方的操作...一个进程打开的ashmem文件只有通过文件Binder发送到另一个进程才能实现内存共享,这大大提高了内存共享的安全性,道理和Binder增强了IPC的安全性是一样的。...销毁节点时须将rb_node从红黑树中摘除,但如果本节点还有引用没有切断,就用dead_node将节点隔离到另一个链表中,直到通知所有进程切断与该节点的引用后,该节点才可能被销毁。

    1.1K00

    【Linux系统】进程间通信-System V消息队列

    也就是说,当前面一个创建了一个消息队列,但是没有进行销毁,最后进程也结束了。当下次新的进程再次创建的时候,就会出错。 消息队列的销毁:1.命名销毁。 2.msgctl。 3.系统重启。...需要注意的是,如果在编程过程中,虽然写了msgctl进行销毁,如果提前终止了进程,消息队列也是没有进行销毁的。 下面会对这些函数进行封装。包括msgqueue类,客户端,服务端。...类型为int 也就是说,通过这个函数,可以创建一个消息队列,然后返回一个消息队列标识符(这个是给用户态唯一确定的标识符,在内核态是通过key来唯一定位一个标识符)。...msgget通过key去创建消息队列,key值我们可以通过ftok函数去创建。(下面会讲解)。...msgflag参数 IPC_NOWAIT:如果消息队列已满,则立即返回,而不是阻塞等待。 0:默认行为,如果消息队列已满,则阻塞等待,直到消息被发送或超时。

    99310

    Docker从零单排系列之基础篇(一)

    例如,系统中的所有进程按照惯例是通过PID标识的,这意味着内核必须管理一个全局的PID列表。而且,所有调用者通过uname系统调用返回的系统相关信息(包括系统名称和有关内核的一些信息)都是相同的。...要启动IPC隔离,我们只需要在调用clone时加上CLONE_NEWIPC参数就可以了。...在一个IPC Namespace里面创建的IPC object对该Namespace内的所有进程可见,但是对其他Namespace不可见,这样就使得不同Namespace之间的进程不能直接通信,就像是在不同的系统里一样...当一个IPC Namespace被销毁,该Namespace内的所有IPC object会被内核自动销毁。...当一个Network Namespace被销毁时,物理设备会被自动移回init Network Namespace,即系统最开始的Namespace。

    60220

    【Linux系统】进程间通信:匿名管道

    1.2 为什么要进程间通信 IPC的主要目的是解决进程隔离带来的协作障碍,具体需求包括: 数据传输:一个进程需将数据发送给另一个进程(如子进程向父进程返回计算结果)。...文件/内存映射:通过文件或内存映射区域间接交换数据。 关键原理:所有IPC均依赖内核管理的共享资源(如缓冲区、内存区域),进程通过系统调用访问这些资源。...,则直接读取;否则触发磁盘I/O 问题:通信需两次拷贝(用户→内核→用户),且磁盘I/O引入毫秒级延迟 管道的优化设计 数据仅在内核缓冲区中流动,无磁盘交互 通过共享同一内存区域,发送方写缓冲区和接收方读缓冲区为同一物理内存...管道通过以下设计实现高效安全的IPC: 纯内存存储:规避磁盘I/O 双向打开:即时激活读写端 阻塞同步:内核自动管理缓冲区状态 动态销毁:随进程结束回收资源 2....底层机制: 操作系统为避免资源浪费,当检测到读端关闭时,会通过信号强制终止写端进程。若写端尝试写入已关闭的管道,首次可能收到 EPIPE 错误(errno=32),再次写入则触发信号 。

    55410

    Android 进阶8:进程通信之 Binder 机制浅析

    因此在一个 IBinder 对象写入 Parcel 对象然后发送到另一个进程时,另外那进程将这个 IBinder 对象发送回去时,原本进程接收到的 IBinder 对象和开始发送出去的是同一个引用。...比如说进程 A 对进程 B 发起 IPC 时,A 中调用 transact() 的线程会阻塞。...); /** * 注册一个 Binder 销毁的监听 如果一个 Binder 被销毁(通常是它所在的进程被关闭),会回调 DeathRecipient 的 BinderDied 方法 * 注意...,只会监听远程的 Binder,本地 Binder 一般不会销毁,除非当前进程退出 * * 如果要注册的 Binder 进程已经销毁,就抛出 RemoteException */ public...对象的 Binder 引用,再通过该 Binder 引用在内核中找到对应的 Binder 实体,进而找到Server 对象,然后将通信内容发送给 Server 对象 远程服务 本地服务的代理,通过调用远程服务可以间接调用本地服务

    2.7K60
    领券