成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android應用程序進程啟動過程的源代碼分析(六)

移動開發(fā) Android
上文從peers.get(index)得到的是一個ZygoteConnection對象,表示一個Socket連接。因此,接下來就是調(diào)用ZygoteConnection.runOnce函數(shù)進一步處理了。

上文從peers.get(index)得到的是一個ZygoteConnection對象,表示一個Socket連接。

因此,接下來就是調(diào)用ZygoteConnection.runOnce函數(shù)進一步處理了。

Step 6. ZygoteConnection.runOnce

這個函數(shù)定義在frameworks/base/core/java/com/android/internal/os/ZygoteConnection.java文件中:

  1. [java] view plaincopyclass ZygoteConnection { 
  2.   ...... 
  3.   boolean runOnce() throws ZygoteInit.MethodAndArgsCaller { 
  4.   String args[]; 
  5.   Arguments parsedArgs = null
  6.   FileDescriptor[] descriptors; 
  7.   try { 
  8.   args = readArgumentList(); 
  9.   descriptors = mSocket.getAncillaryFileDescriptors(); 
  10.   } catch (IOException ex) { 
  11.   ...... 
  12.   return true
  13.   } 
  14.   ...... 
  15.   /** the stderr of the most recent request, if avail */ 
  16.   PrintStream newStderr = null
  17.   if (descriptors != null && descriptors.length >= 3) { 
  18.   newStderr = new PrintStream( 
  19.   new FileOutputStream(descriptors[2])); 
  20.   } 
  21.   int pid; 
  22.   try { 
  23.   parsedArgs = new Arguments(args); 
  24.   applyUidSecurityPolicy(parsedArgs, peer); 
  25.   applyDebuggerSecurityPolicy(parsedArgs); 
  26.   applyRlimitSecurityPolicy(parsedArgs, peer); 
  27.   applyCapabilitiesSecurityPolicy(parsedArgs, peer); 
  28.   int[][] rlimits = null
  29.   if (parsedArgs.rlimits != null) { 
  30.   rlimits = parsedArgs.rlimits.toArray(intArray2d); 
  31.   } 
  32.   pid = Zygote.forkAndSpecialize(parsedArgs.uid, parsedArgs.gid, 
  33.   parsedArgs.gids, parsedArgs.debugFlags, rlimits); 
  34.   } catch (IllegalArgumentException ex) { 
  35.   ...... 
  36.   } catch (ZygoteSecurityException ex) { 
  37.   ...... 
  38.   } 
  39.   if (pid == 0) { 
  40.   // in child 
  41.   handleChildProc(parsedArgs, descriptors, newStderr); 
  42.   // should never happen 
  43.   return true
  44.   } else { /* pid != 0 */ 
  45.   // in parent...pid of < 0 means failure 
  46.   return handleParentProc(pid, descriptors, parsedArgs); 
  47.   } 
  48.   } 
  49.   ...... 
  50.   } 

真正創(chuàng)建進程的地方就是在這里了:

  1. [java] view plaincopypid = Zygote.forkAndSpecialize(parsedArgs.uid, parsedArgs.gid, 
  2.   parsedArgs.gids, parsedArgs.debugFlags, rlimits); 

有Linux開發(fā)經(jīng)驗的讀者很容易看懂這個函數(shù)調(diào)用,這個函數(shù)會創(chuàng)建一個進程,而且有兩個返回值,一個是在當前進程中返回的,一個是在新創(chuàng)建的進程中 返回,即在當前進程的子進程中返回,在當前進程中的返回值就是新創(chuàng)建的子進程的pid值,而在子進程中的返回值是0。因為我們只關(guān)心創(chuàng)建的新進程的情況, 因此,我們沿著子進程的執(zhí)行路徑繼續(xù)看下去:

  1. [java] view plaincopy if (pid == 0) { 
  2.   // in child 
  3.   handleChildProc(parsedArgs, descriptors, newStderr); 
  4.   // should never happen 
  5.   return true
  6.   } else { /* pid != 0 */ 
  7.   ...... 
  8.   } 

這里就是調(diào)用handleChildProc函數(shù)了。

責任編輯:閆佳明 來源: bbs.9ria
相關(guān)推薦

2014-06-19 14:25:04

Android應用程序進程啟動

2014-06-20 11:05:56

Android應用程序進程啟動

2014-06-20 11:24:34

Android應用程序進程啟動

2014-06-19 14:30:28

Android應用程序進程啟動

2014-06-19 14:54:11

Android應用程序進程啟動

2014-06-19 14:59:40

Android應用程序進程啟動

2014-06-20 11:20:37

Android應用程序進程啟動

2012-02-20 14:47:08

JavaPlay

2014-05-22 15:00:16

Android消息處理機制Looper

2011-08-17 16:16:29

iPhone應用程序啟動過程

2011-07-28 10:34:38

Cocoa 程序 啟動

2011-06-28 13:27:13

ARM Linux

2014-06-23 10:31:09

Android啟動過程

2014-07-31 10:06:01

谷歌Google應用

2022-08-29 17:34:05

鴻蒙操作系統(tǒng)

2018-03-13 13:00:03

Linux運維啟動分析

2012-08-16 09:07:57

Erlang

2024-09-11 09:25:03

Tomcat組件PREP

2009-08-14 17:57:43

ASP.NET MVC

2014-05-22 15:45:58

Android消息處理機制Looper
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚洲一区二区三区免费观看 | 九九热精品视频 | 91久久精品国产91久久 | 九九色综合| 国产精品不卡一区 | 国产精品美女久久久久久免费 | 密色视频 | 久久综合爱| 中文字字幕一区二区三区四区五区 | 日本在线免费视频 | 国产精品高潮呻吟久久 | 日韩欧美精品 | 综合伊人| 国产精品久久久久久妇女 | 在线一级片 | 日韩欧美视频在线 | 区一区二区三在线观看 | 久久久激情视频 | 成人免费视屏 | 久久尤物免费一区二区三区 | 精品国产一区二区三区成人影院 | 亚洲一区在线播放 | 久久国产激情视频 | 午夜影院普通用户体验区 | 国产在线1区 | 国产区在线 | 午夜欧美一区二区三区在线播放 | 亚洲免费在线视频 | 久久久久亚洲精品中文字幕 | 国产农村妇女精品一二区 | 黄网站涩免费蜜桃网站 | 成人综合视频在线 | 欧美激情精品久久久久久 | 狠狠爱网址 | 99av成人精品国语自产拍 | 五月天天丁香婷婷在线中 | 亚洲精品成人网 | 精品久久久久久久久久久 | 欧美精品一区二区三区视频 | 人人干人人干人人干 | 久久99视频 |