日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

[转载] Java中Runtime的使用

發(fā)布時(shí)間:2025/3/11 java 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [转载] Java中Runtime的使用 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

參考鏈接: Java中的JVM的關(guān)閉掛鉤

1? ? ? ? ? ? JDK中Runtime的定義??

?

?

??

?

?

?http://blog.csdn.net/lysnow_oss/archive/2007/05/12/1606349.aspx

??

?

?

?<轉(zhuǎn)載>

?

?

?那就首先說(shuō)點(diǎn)Runtime類吧,他是一個(gè)與JVM運(yùn)行時(shí)環(huán)境有關(guān)的類,這個(gè)類是Singleton的。我說(shuō)幾個(gè)自己覺得重要的地方。

?

?

?1、Runtime.getRuntime()可以取得當(dāng)前JVM的運(yùn)行時(shí)環(huán)境,這也是在Java中唯一一個(gè)得到運(yùn)行時(shí)環(huán)境的方法。

?

?

?2、Runtime上其他大部分的方法都是實(shí)例方法,也就是說(shuō)每次進(jìn)行運(yùn)行時(shí)調(diào)用時(shí)都要用到getRuntime方法。

?

?

?3、Runtime中的exit方法是退出當(dāng)前JVM的方法,估計(jì)也是唯一的一個(gè)吧,因?yàn)槲铱吹絊ystem類中的exit實(shí)際上也是通過(guò)調(diào)用 Runtime.exit()來(lái)退出JVM的,這里說(shuō)明一下Java對(duì)Runtime返回值的一般規(guī)則(后邊也提到了),0代表正常退出,非0代表異常中 止,這只是Java的規(guī)則,在各個(gè)操作系統(tǒng)中總會(huì)發(fā)生一些小的混淆。

?

?

??

?

?

?4、Runtime.addShutdownHook()方法可以注冊(cè)一個(gè)hook在JVM執(zhí)行shutdown的過(guò)程中,方法的參數(shù)只要是一個(gè)初始化過(guò)但是沒有執(zhí)行的Thread實(shí)例就可以。(注意,Java中的Thread都是執(zhí)行過(guò)了就不值錢的哦)

?

?

?5、說(shuō)到addShutdownHook這個(gè)方法就要說(shuō)一下JVM運(yùn)行環(huán)境是在什么情況下shutdown或者abort的。文檔上是這樣寫 的,當(dāng)最后一個(gè)非精靈進(jìn)程退出或者收到了一個(gè)用戶中斷信號(hào)、用戶登出、系統(tǒng)shutdown、Runtime的exit方法被調(diào)用時(shí)JVM會(huì)啟動(dòng) shutdown的過(guò)程,在這個(gè)過(guò)程開始后,他會(huì)并行啟動(dòng)所有登記的shutdown hook(注意是并行啟動(dòng),這就需要線程安全和防止死鎖)。當(dāng)shutdown過(guò)程啟動(dòng)后,只有通過(guò)調(diào)用halt方法才能中止shutdown的過(guò)程并退 出JVM。

?

?

?那什么時(shí)候JVM會(huì)abort退出那?首先說(shuō)明一下,abort退出時(shí)JVM就是停止運(yùn)行但并不一定進(jìn)行shutdown。這只有JVM在遇到 SIGKILL信號(hào)或者windows中止進(jìn)程的信號(hào)、本地方法發(fā)生類似于訪問(wèn)非法地址一類的內(nèi)部錯(cuò)誤時(shí)會(huì)出現(xiàn)。這種情況下并不能保證shutdown hook是否被執(zhí)行。

?

?

??

?

?

?首先講的是?

?Runtime.exec()?

?方法的所有重載。這里要注意的有一點(diǎn),就是?

?public Process exec(String [] cmdArray, String [] envp);?

?這個(gè)方法中?

?cmdArray?

?是一個(gè)執(zhí)行的命令和參數(shù)的字符串?dāng)?shù)組,數(shù)組的第一個(gè)元素是要執(zhí)行的命令往后依次都是命令的參數(shù),?

?envp?

?我個(gè)人感覺應(yīng)該和?

?C?

?中的?

?execve?

?中的環(huán)境變量是一樣的,?

?envp?

?中使用的是?

?name=value?

?的方式。?

?

?

??

?

?

?2? ? ? ? ? ? Runtime的構(gòu)造函數(shù)和方法??

?

?

??

?

?

?Runtime是個(gè)單例類

?

?

??

?

?

? ??

? ? ?方法摘要

? ? ??

? ??

? ? ? void

? ? ??

? ??

? ? ?addShutdownHook 注冊(cè)新的虛擬機(jī)來(lái)關(guān)閉掛鉤。 (

? ? ?Thread? ?hook)?

? ? ? ? ? ? ? ??

? ? ??

? ??

? ? ? int

? ? ??

? ??

? ? ?availableProcessors 向 Java 虛擬機(jī)返回可用處理器的數(shù)目。 ()?

? ? ? ? ? ? ? ??

? ? ??

? ??

? ? ??

? ? ?Process??

? ? ??

? ??

? ? ?exec 在單獨(dú)的進(jìn)程中執(zhí)行指定的字符串命令。 (

? ? ?String? ?command)?

? ? ? ? ? ? ? ??

? ? ??

? ??

? ? ??

? ? ?Process??

? ? ??

? ??

? ? ?exec 在單獨(dú)的進(jìn)程中執(zhí)行指定命令和變量。 (

? ? ?String? [] cmdarray)?

? ? ? ? ? ? ? ??

? ? ??

? ??

? ? ??

? ? ?Process??

? ? ??

? ??

? ? ?exec 在指定環(huán)境的獨(dú)立進(jìn)程中執(zhí)行指定命令和變量。 (

? ? ?String? [] cmdarray,?

? ? ?String? [] envp)?

? ? ? ? ? ? ? ??

? ? ??

? ??

? ? ??

? ? ?Process??

? ? ??

? ??

? ? ?exec 在指定環(huán)境和工作目錄的獨(dú)立進(jìn)程中執(zhí)行指定的命令和變量。 (

? ? ?String? [] cmdarray,?

? ? ?String? [] envp,?

? ? ?File? ?dir)?

? ? ? ? ? ? ? ??

? ? ??

? ??

? ? ??

? ? ?Process??

? ? ??

? ??

? ? ?exec 在指定環(huán)境的單獨(dú)進(jìn)程中執(zhí)行指定的字符串命令。 (

? ? ?String? ?command,?

? ? ?String? [] envp)?

? ? ? ? ? ? ? ??

? ? ??

? ??

? ? ??

? ? ?Process??

? ? ??

? ??

? ? ?exec 在有指定環(huán)境和工作目錄的獨(dú)立進(jìn)程中執(zhí)行指定的字符串命令。 (

? ? ?String? ?command,?

? ? ?String? [] envp,?

? ? ?File? ?dir)?

? ? ? ? ? ? ? ??

? ? ??

? ??

? ? ? void

? ? ??

? ??

? ? ?exit 通過(guò)啟動(dòng)虛擬機(jī)的關(guān)閉序列,終止當(dāng)前正在運(yùn)行的 Java 虛擬機(jī)。 (int status)?

? ? ? ? ? ? ? ??

? ? ??

? ??

? ? ? long

? ? ??

? ??

? ? ?freeMemory 返回 Java 虛擬機(jī)中的空閑內(nèi)存量。 ()?

? ? ? ? ? ? ? ??

? ? ??

? ??

? ? ? void

? ? ??

? ??

? ? ?gc 運(yùn)行垃圾回收器。 ()?

? ? ? ? ? ? ? ??

? ? ??

? ??

? ? ??

? ? ?InputStream??

? ? ??

? ??

? ? ?getLocalizedInputStream 已過(guò)時(shí)。 從 JDK 1.1 開始,將本地編碼字節(jié)流轉(zhuǎn)換為 Unicode 字符流的首選方法是使用 InputStreamReader 和 BufferedReader 類。 (

? ? ?InputStream? ?in)?

? ? ? ? ? ? ? ??

? ? ??

? ??

? ? ??

? ? ?OutputStream??

? ? ??

? ??

? ? ?getLocalizedOutputStream 已過(guò)時(shí)。 從 JDK 1.1 開始,將 Unicode 字符流轉(zhuǎn)換為本地編碼字節(jié)流的首選方法是使用 OutputStreamWriter、BufferedWriter 和 PrintWriter 類。 (

? ? ?OutputStream? ?out)?

? ? ? ? ? ? ? ??

? ? ??

? ??

? ? ?static?

? ? ?Runtime??

? ? ??

? ??

? ? ?getRuntime 返回與當(dāng)前 Java 應(yīng)用程序相關(guān)的運(yùn)行時(shí)對(duì)象。 ()?

? ? ? ? ? ? ? ??

? ? ??

? ??

? ? ? void

? ? ??

? ??

? ? ?halt 強(qiáng)行終止目前正在運(yùn)行的 Java 虛擬機(jī)。 (int status)?

? ? ? ? ? ? ? ??

? ? ??

? ??

? ? ? void

? ? ??

? ??

? ? ?load 加載作為動(dòng)態(tài)庫(kù)的指定文件名。 (

? ? ?String? ?filename)?

? ? ? ? ? ? ? ??

? ? ??

? ??

? ? ? void

? ? ??

? ??

? ? ?loadLibrary 加載具有指定庫(kù)名的動(dòng)態(tài)庫(kù)。 (

? ? ?String? ?libname)?

? ? ? ? ? ? ? ??

? ? ??

? ??

? ? ? long

? ? ??

? ??

? ? ?maxMemory 返回 Java 虛擬機(jī)試圖使用的最大內(nèi)存量。 ()?

? ? ? ? ? ? ? ??

? ? ??

? ??

? ? ? boolean

? ? ??

? ??

? ? ?removeShutdownHook 取消注冊(cè)某個(gè)先前已注冊(cè)的虛擬機(jī)關(guān)閉掛鉤。 (

? ? ?Thread? ?hook)?

? ? ? ? ? ? ? ??

? ? ??

? ??

? ? ? void

? ? ??

? ??

? ? ?runFinalization 運(yùn)行掛起 finalization 的所有對(duì)象的終止方法。 ()?

? ? ? ? ? ? ? ??

? ? ??

? ??

? ? ?static void

? ? ??

? ??

? ? ?runFinalizersOnExit 已過(guò)時(shí)。 此方法本身具有不安全性。它可能對(duì)正在使用的對(duì)象調(diào)用終結(jié)方法,而其他線程正在操作這些對(duì)象,從而導(dǎo)致不正確的行為或死鎖。 (boolean value)?

? ? ? ? ? ? ? ??

? ? ??

? ??

? ? ? long

? ? ??

? ??

? ? ?totalMemory 返回 Java 虛擬機(jī)中的內(nèi)存總量。 ()?

? ? ? ? ? ? ? ??

? ? ??

? ??

? ? ? void

? ? ??

? ??

? ? ?traceInstructions 啟用/禁用指令跟蹤。 (boolean on)?

? ? ? ? ? ? ? ??

? ? ??

? ??

? ? ? void

? ? ??

? ??

? ? ?traceMethodCalls 啟用/禁用方法調(diào)用跟蹤。 (boolean on)?

? ? ? ? ? ? ? ??

? ? ??

?

??

?

?

?3? ? ? ? ? ? Runtime的使用??

?

?

?這個(gè)程序用exec調(diào)用了一個(gè)外部命令之后馬上使用exitValue就對(duì)其返回值進(jìn)行檢查,讓我們看看會(huì)出現(xiàn)什么問(wèn)題。

?

?

??

?

?

?import java.util.*;

? import java.io.*;

?

?

?public class BadExecJavac

? {

? public static void main(String args[])

? {

? try

? {?

? Runtime rt = Runtime.getRuntime();

? Process proc = rt.exec("javac");

? int exitVal = proc.exitValue();

? System.out.println("Process exitValue: " + exitVal);

? } catch (Throwable t)

? {

? t.printStackTrace();

? }

? }

? }

?

?

??

?

?

?A run of BadExecJavac produces:?

?

?

? E:classescomjavaworldjpitfallsarticle2>java BadExecJavac

? java.lang.IllegalThreadStateException: process has not exited

? at java.lang.Win32Process.exitValue(Native Method)

? at BadExecJavac.main(BadExecJavac.java:13)

?

?

??

?

?

?這里看原文就可以了解,這里主要的問(wèn)題就是錯(cuò)誤的調(diào)用了exitValue來(lái)取得外部命令的返回值(呵呵,這個(gè)錯(cuò)誤我也曾經(jīng)犯過(guò)),因?yàn)?exitValue這個(gè)方法是不阻塞的,程序在調(diào)用這個(gè)方法時(shí)外部命令并沒有返回所以造成了異常的出現(xiàn),這里是由另外的方法來(lái)等待外部命令執(zhí)行完畢的,就 是waitFor方法,這個(gè)方法會(huì)一直阻塞直到外部命令執(zhí)行結(jié)束,然后返回外部命令執(zhí)行的結(jié)果,作者在這里一頓批評(píng)設(shè)計(jì)者的思路有問(wèn)題,呵呵,反正我是無(wú) 所謂阿,能用就可以拉。但是作者在這里有一個(gè)說(shuō)明,就是exitValue也是有好多用途的。因?yàn)楫?dāng)你在一個(gè)Process上調(diào)用waitFor方法時(shí), 當(dāng)前線程是阻塞的,如果外部命令無(wú)法執(zhí)行結(jié)束,那么你的線程就會(huì)一直阻塞下去,這種意外會(huì)影響我們程序的執(zhí)行。所以在我們不能判斷外部命令什么時(shí)候執(zhí)行完 畢而我們的程序還需要繼續(xù)執(zhí)行的情況下,我們就應(yīng)該循環(huán)的使用exitValue來(lái)取得外部命令的返回狀態(tài),并在外部命令返回時(shí)作出相應(yīng)的處理。

?

?

??

?

?

?2、對(duì)exitValue處改進(jìn)了的程序

?

?

?import java.util.*;

? import java.io.*;

?

?

?public class BadExecJavac2

? {

? public static void main(String args[])

? {

? try

? {?

? Runtime rt = Runtime.getRuntime();

? Process proc = rt.exec("javac");

? int exitVal = proc.waitFor();

? System.out.println("Process exitValue: " + exitVal);

? } catch (Throwable t)

? {

? t.printStackTrace();

? }

? }

? }

?

?

?不幸的是,這個(gè)程序也無(wú)法執(zhí)行完成,它沒有輸出但卻一直懸在那里,這是為什么那?

?

?

? JDK文檔中對(duì)此有如此的解釋:因?yàn)楸镜氐南到y(tǒng)對(duì)標(biāo)準(zhǔn)輸入和輸出所提供的緩沖池有效,所以錯(cuò)誤的對(duì)標(biāo)準(zhǔn)輸出快速的寫入和從標(biāo)準(zhǔn)輸入快速的讀入都有可能造成子進(jìn)程的鎖,甚至死鎖。

?

?

? 文檔引述完了,作者又開始批評(píng)了,他說(shuō)JDK僅僅說(shuō)明為什么問(wèn)題會(huì)發(fā)生,卻并沒有說(shuō)明這個(gè)問(wèn)題怎么解決,這的確是個(gè)問(wèn)題哈。緊接著作者 說(shuō)出自己的做法,就是在執(zhí)行完外部命令后我們要控制好Process的所有輸入和輸出(視情況而定),在這個(gè)例子里邊因?yàn)檎{(diào)用的是Javac,而他在沒有 參數(shù)的情況下會(huì)將提示信息輸出到標(biāo)準(zhǔn)出錯(cuò),所以在下面的程序中我們要對(duì)此進(jìn)行處理。

?

?

? import java.util.*;

? import java.io.*;

?

?

?public class MediocreExecJavac

? {

? public static void main(String args[])

? {

? try

? {?

? Runtime rt = Runtime.getRuntime();

? Process proc = rt.exec("javac");

? InputStream stderr = proc.getErrorStream();

? InputStreamReader isr = new InputStreamReader(stderr);

? BufferedReader br = new BufferedReader(isr);

? String line = null;

? System.out.println("");

? while ( (line = br.readLine()) != null)

? System.out.println(line);

? System.out.println("");

? int exitVal = proc.waitFor();

? System.out.println("Process exitValue: " + exitVal);

? } catch (Throwable t)

? {

? t.printStackTrace();

? }

? }

? }

?

?

? 程序的運(yùn)行結(jié)果為

?

?

?E:classescomjavaworldjpitfallsarticle2>java MediocreExecJavac

??

? Usage: javac?

?

?

?where includes:

? -g Generate all debugging info

? -g:none Generate no debugging info

? -g:{lines,vars,source} Generate only some debugging info

? -O Optimize; may hinder debugging or enlarge class files

? -nowarn Generate no warnings

? -verbose Output messages about what the compiler is doing

? -deprecation Output source locations where deprecated APIs are used

? -classpath Specify where to find user class files

? -sourcepath Specify where to find input source files

? -bootclasspath Override location of bootstrap class files

? -extdirs Override location of installed extensions

? -d Specify where to place generated class files

? -encoding Specify character encoding used by source files

? -target Generate class files for specific VM version

??

? Process exitValue: 2

?

?

? 哎,不管怎么說(shuō)還是出來(lái)了結(jié)果,作者作了一下總結(jié),就是說(shuō),為了處理好外部命令大量輸出的情況,你要確保你的程序處理好外部命令所需要的輸入或者輸出。

?

?

? 下一個(gè)題目,當(dāng)我們調(diào)用一個(gè)我們認(rèn)為是可執(zhí)行程序的時(shí)候容易發(fā)生的錯(cuò)誤(今天晚上我剛剛犯這個(gè)錯(cuò)誤,沒事做這個(gè)練習(xí)時(shí)候發(fā)生的)

?

?

?import java.util.*;

? import java.io.*;

?

?

?public class BadExecWinDir

? {

? public static void main(String args[])

? {

? try

? {?

? Runtime rt = Runtime.getRuntime();

? Process proc = rt.exec("dir");

? InputStream stdin = proc.getInputStream();

? InputStreamReader isr = new InputStreamReader(stdin);

? BufferedReader br = new BufferedReader(isr);

? String line = null;

? System.out.println("");

? while ( (line = br.readLine()) != null)

? System.out.println(line);

? System.out.println("");

? int exitVal = proc.waitFor();?

? System.out.println("Process exitValue: " + exitVal);

? } catch (Throwable t)

? {

? t.printStackTrace();

? }

? }

? }

?

?

?A run of BadExecWinDir produces:?

?

?

? E:classescomjavaworldjpitfallsarticle2>java BadExecWinDir

? java.io.IOException: CreateProcess: dir error=2

? at java.lang.Win32Process.create(Native Method)

? at java.lang.Win32Process.(Unknown Source)

? at java.lang.Runtime.execInternal(Native Method)

? at java.lang.Runtime.exec(Unknown Source)

? at java.lang.Runtime.exec(Unknown Source)

? at java.lang.Runtime.exec(Unknown Source)

? at java.lang.Runtime.exec(Unknown Source)

? at BadExecWinDir.main(BadExecWinDir.java:12)

?

?

? 說(shuō)實(shí)在的,這個(gè)錯(cuò)誤還真是讓我摸不著頭腦,我覺得在windows中返回2應(yīng)該是沒有找到這個(gè)文件的緣故,可能windows 2000中只有cmd命令,dir命令不是當(dāng)前環(huán)境變量能夠解釋的吧。我也不知道了,慢慢往下看吧。

?

?

?嘿,果然和作者想的一樣,就是因?yàn)閐ir命令是由windows中的解釋器解釋的,直接執(zhí)行dir時(shí)無(wú)法找到dir.exe這個(gè)命令,所以會(huì)出 現(xiàn)文件未找到這個(gè)2的錯(cuò)誤。如果我們要執(zhí)行這樣的命令,就要先根據(jù)操作系統(tǒng)的不同執(zhí)行不同的解釋程序command.com 或者cmd.exe。

?

?

?作者對(duì)上邊的程序進(jìn)行了修改

?

?

?import java.util.*;

? import java.io.*;

?

?

?class StreamGobbler extends Thread

? {

? InputStream is;

? String type;

?

?

?StreamGobbler(InputStream is, String type)

? {

? this.is = is;

? this.type = type;

? }

?

?

?public void run()

? {

? try

? {

? InputStreamReader isr = new InputStreamReader(is);

? BufferedReader br = new BufferedReader(isr);

? String line=null;

? while ( (line = br.readLine()) != null)

? System.out.println(type + ">" + line);?

? } catch (IOException ioe)

? {

? ioe.printStackTrace();?

? }

? }

? }

?

?

?public class GoodWindowsExec

? {

? public static void main(String args[])

? {

? if (args.length < 1)

? {

? System.out.println("USAGE: java GoodWindowsExec ");

? System.exit(1);

? }

?

?

?try

? {?

? String osName = System.getProperty("os.name" );

? String[] cmd = new String[3];

?

?

?if( osName.equals( "Windows NT" ) )

? {

? cmd[0] = "cmd.exe" ;

? cmd[1] = "/C" ;

? cmd[2] = args[0];

? }

? else if( osName.equals( "Windows 95" ) )

? {

? cmd[0] = "command.com" ;

? cmd[1] = "/C" ;

? cmd[2] = args[0];

? }

?

?

?Runtime rt = Runtime.getRuntime();

? System.out.println("Execing " + cmd[0] + " " + cmd[1]?

? + " " + cmd[2]);

? Process proc = rt.exec(cmd);

? // any error message?

? StreamGobbler errorGobbler = new?

? StreamGobbler(proc.getErrorStream(), "ERROR");?

?

?

?// any output?

? StreamGobbler outputGobbler = new?

? StreamGobbler(proc.getInputStream(), "OUTPUT");

?

?

?// kick them off

? errorGobbler.start();

? outputGobbler.start();

?

?

?// any error???

? int exitVal = proc.waitFor();

? System.out.println("ExitValue: " + exitVal);?

? } catch (Throwable t)

? {

? t.printStackTrace();

? }

? }

? }

?

?

?Running GoodWindowsExec with the dir command generates:?

?

?

? E:classescomjavaworldjpitfallsarticle2>java GoodWindowsExec "dir *.java"

? Execing cmd.exe /C dir *.java

? OUTPUT> Volume in drive E has no label.

? OUTPUT> Volume Serial Number is 5C5F-0CC9

? OUTPUT>

? OUTPUT> Directory of E:classescomjavaworldjpitfallsarticle2

? OUTPUT>

? OUTPUT>10/23/00 09:01p 805 BadExecBrowser.java

? OUTPUT>10/22/00 09:35a 770 BadExecBrowser1.java

? OUTPUT>10/24/00 08:45p 488 BadExecJavac.java

? OUTPUT>10/24/00 08:46p 519 BadExecJavac2.java

? OUTPUT>10/24/00 09:13p 930 BadExecWinDir.java

? OUTPUT>10/22/00 09:21a 2,282 BadURLPost.java

? OUTPUT>10/22/00 09:20a 2,273 BadURLPost1.java

? ... (some output omitted for brevity)

? OUTPUT>10/12/00 09:29p 151 SuperFrame.java

? OUTPUT>10/24/00 09:23p 1,814 TestExec.java

? OUTPUT>10/09/00 05:47p 23,543 TestStringReplace.java

? OUTPUT>10/12/00 08:55p 228 TopLevel.java

? OUTPUT> 22 File(s) 46,661 bytes

? OUTPUT> 19,678,420,992 bytes free

? ExitValue: 0

?

?

?這里作者教了一個(gè)windows中很有用的方法,呵呵,至少我是不知道的,就是cmd.exe /C +一個(gè)windows中注冊(cè)了后綴的文檔名,windows會(huì)自動(dòng)地調(diào)用相關(guān)的程序來(lái)打開這個(gè)文檔,我試了一下,的確很好用,但是好像文件路徑中有空格的 話就有點(diǎn)問(wèn)題,我加上引號(hào)也無(wú)法解決。

?

?

?這里作者強(qiáng)調(diào)了一下,不要假設(shè)你執(zhí)行的程序是可執(zhí)行的程序,要清楚自己的程序是單獨(dú)可執(zhí)行的還是被解釋的,本章的結(jié)束作者會(huì)介紹一個(gè)命令行工具來(lái)幫助我們分析。

?

?

?這里還有一點(diǎn),就是得到process的輸出的方式是getInputStream,這是因?yàn)槲覀円獜腏ava 程序的角度來(lái)看,外部程序的輸出對(duì)于Java來(lái)說(shuō)就是輸入,反之亦然。

?

?

? 最后的一個(gè)漏洞的地方就是錯(cuò)誤的認(rèn)為exec方法會(huì)接受所有你在命令行或者Shell中輸入并接受的字符串。這些錯(cuò)誤主要出現(xiàn)在命令作 為參數(shù)的情況下,程序員錯(cuò)誤的將所有命令行中可以輸入的參數(shù)命令加入到exec中(這段翻譯的不好,湊合看吧)。下面的例子中就是一個(gè)程序員想重定向一個(gè) 命令的輸出。

?

?

? import java.util.*;

? import java.io.*;

?

?

?// StreamGobbler omitted for brevity

?

?

?public class BadWinRedirect

? {

? public static void main(String args[])

? {

? try

? {?

? Runtime rt = Runtime.getRuntime();

? Process proc = rt.exec("java jecho 'Hello World' > test.txt");

? // any error message?

? StreamGobbler errorGobbler = new?

? StreamGobbler(proc.getErrorStream(), "ERROR");?

?

?

?// any output?

? StreamGobbler outputGobbler = new?

? StreamGobbler(proc.getInputStream(), "OUTPUT");

?

?

?// kick them off

? errorGobbler.start();

? outputGobbler.start();

?

?

?// any error???

? int exitVal = proc.waitFor();

? System.out.println("ExitValue: " + exitVal);?

? } catch (Throwable t)

? {

? t.printStackTrace();

? }

? }

? }

?

?

?Running BadWinRedirect produces:?

?

?

? E:classescomjavaworldjpitfallsarticle2>java BadWinRedirect

? OUTPUT>'Hello World' > test.txt

? ExitValue: 0

?

?

?程序員的本意是將Hello World這個(gè)輸入重訂向到一個(gè)文本文件中,但是這個(gè)文件并沒有生成,jecho僅僅是將命令行中的參數(shù)輸出到標(biāo)準(zhǔn)輸出中,用戶覺得可以像dos中重定向 一樣將輸出重定向到一個(gè)文件中,但這并不能實(shí)現(xiàn),用戶錯(cuò)誤的將exec認(rèn)為是一個(gè)shell解釋器,但它并不是,如果你想將一個(gè)程序的輸出重定向到其他的 程序中,你必須用程序來(lái)實(shí)現(xiàn)他。可用java.io中的包。

?

?

? import java.util.*;

? import java.io.*;

?

?

?class StreamGobbler extends Thread

? {

? InputStream is;

? String type;

? OutputStream os;

?

?

?StreamGobbler(InputStream is, String type)

? {

? this(is, type, null);

? }

?

?

?StreamGobbler(InputStream is, String type, OutputStream redirect)

? {

? this.is = is;

? this.type = type;

? this.os = redirect;

? }

?

?

?public void run()

? {

? try

? {

? PrintWriter pw = null;

? if (os != null)

? pw = new PrintWriter(os);

?

?

?InputStreamReader isr = new InputStreamReader(is);

? BufferedReader br = new BufferedReader(isr);

? String line=null;

? while ( (line = br.readLine()) != null)

? {

? if (pw != null)

? pw.println(line);

? System.out.println(type + ">" + line);?

? }

? if (pw != null)

? pw.flush();

? } catch (IOException ioe)

? {

? ioe.printStackTrace();?

? }

? }

? }

?

?

?public class GoodWinRedirect

? {

? public static void main(String args[])

? {

? if (args.length < 1)

? {

? System.out.println("USAGE java GoodWinRedirect ");

? System.exit(1);

? }

?

?

?try

? {?

? FileOutputStream fos = new FileOutputStream(args[0]);

? Runtime rt = Runtime.getRuntime();

? Process proc = rt.exec("java jecho 'Hello World'");

? // any error message?

? StreamGobbler errorGobbler = new?

? StreamGobbler(proc.getErrorStream(), "ERROR");?

?

?

?// any output?

? StreamGobbler outputGobbler = new?

? StreamGobbler(proc.getInputStream(), "OUTPUT", fos);

?

?

?// kick them off

? errorGobbler.start();

? outputGobbler.start();

?

?

?// any error???

? int exitVal = proc.waitFor();

? System.out.println("ExitValue: " + exitVal);

? fos.flush();

? fos.close();?

? } catch (Throwable t)

? {

? t.printStackTrace();

? }

? }

? }

?

?

?Running GoodWinRedirect produces:?

?

?

? E:classescomjavaworldjpitfallsarticle2>java GoodWinRedirect test.txt

? OUTPUT>'Hello World'

? ExitValue: 0

?

?

?這里就不多說(shuō)了,看看就明白,緊接著作者給出了一個(gè)監(jiān)測(cè)命令的小程序

?

?

?import java.util.*;

? import java.io.*;

?

?

?// class StreamGobbler omitted for brevity

?

?

?public class TestExec

? {

? public static void main(String args[])

? {

? if (args.length < 1)

? {

? System.out.println("USAGE: java TestExec "cmd"");

? System.exit(1);

? }

?

?

?try

? {

? String cmd = args[0];

? Runtime rt = Runtime.getRuntime();

? Process proc = rt.exec(cmd);

?

?

?// any error message?

? StreamGobbler errorGobbler = new?

? StreamGobbler(proc.getErrorStream(), "ERR");?

?

?

?// any output?

? StreamGobbler outputGobbler = new?

? StreamGobbler(proc.getInputStream(), "OUT");

?

?

?// kick them off

? errorGobbler.start();

? outputGobbler.start();

?

?

?// any error???

? int exitVal = proc.waitFor();

? System.out.println("ExitValue: " + exitVal);

? } catch (Throwable t)

? {

? t.printStackTrace();

? }

? }

? }

?

?

?對(duì)這個(gè)程序進(jìn)行運(yùn)行:?

? E:classescomjavaworldjpitfallsarticle2>java TestExec "e:javadocsindex.html"

? java.io.IOException: CreateProcess: e:javadocsindex.html error=193

? at java.lang.Win32Process.create(Native Method)

? at java.lang.Win32Process.(Unknown Source)

? at java.lang.Runtime.execInternal(Native Method)

? at java.lang.Runtime.exec(Unknown Source)

? at java.lang.Runtime.exec(Unknown Source)

? at java.lang.Runtime.exec(Unknown Source)

? at java.lang.Runtime.exec(Unknown Source)

? at TestExec.main(TestExec.java:45)

?

?

?193在windows中是說(shuō)這不是一個(gè)win32程序,這說(shuō)明路徑中找不到這個(gè)網(wǎng)頁(yè)的關(guān)聯(lián)程序,下面作者決定用一個(gè)絕對(duì)路徑來(lái)試一下。

?

?

?E:classescomjavaworldjpitfallsarticle2>java TestExec?

? "e:program filesnetscapeprogramnetscape.exe e:javadocsindex.html"

? ExitValue: 0

?

?

? 好用了,這個(gè)我也試了一下,用的是IE。

?

?

? 最后,作者總結(jié)了幾條規(guī)則,防止我們?cè)谶M(jìn)行Runtime.exec()調(diào)用時(shí)出現(xiàn)錯(cuò)誤。

?

?

??

?

?

??

?

?

?在一個(gè)外部進(jìn)程執(zhí)行完之前你不能得到他的退出狀態(tài)?

?

?

?在你的外部程序開始執(zhí)行的時(shí)候你必須馬上控制輸入、輸出、出錯(cuò)這些流。?

?

?

?你必須用?

?Runtime.exec()?

?去執(zhí)行程序?

?

?

?你不能象命令行一樣使用?

?Runtime.exec()?

?。?

?

?

??

?

?

??

?

?

?在nea需要?jiǎng)討B(tài)來(lái)添加到RNC的路由,可以利用Runtime.exec方法來(lái)實(shí)現(xiàn)

?

?

?具體實(shí)現(xiàn)如下:

?

?

?其中的ip參數(shù)到時(shí)候可以是動(dòng)態(tài)獲取就可以了。

?

?

??

?

?

?String[] cmds = {"cmd.exe","/c","route add 11.11.11.11 mask 255.255.255.255 11.11.11.1 metric 30 > tree.txt"};

?

?

? ? ? ? ?try {?

?

?

? ? ? ? ? ? ?Process ps = Runtime.getRuntime().exec(cmds);?

?

?

? ? ? ? ? ? ?System.out.print(loadStream (ps.getInputStream()));?

?

?

? ? ? ? ? ? ?System.err.print(loadStream (ps.getErrorStream()));?

?

?

? ? ? ? ?} catch(IOException ioe) {?

?

?

? ? ? ? ? ? ?ioe.printStackTrace();?

?

?

? ? ? ? ? }

?

?

??

?

?

? ? ? ? ?// read an input-stream into a String

?

?

? ? ?static String loadStream(InputStream in) throws IOException {?

?

?

? ? ? ? ?int ptr = 0;?

?

?

? ? ? ? ?in = new BufferedInputStream(in);?

?

?

? ? ? ? ?StringBuffer buffer = new StringBuffer();?

?

?

? ? ? ? ?while( (ptr = in.read()) != -1 ) {?

?

?

? ? ? ? ? ? ?buffer.append((char)ptr);?

?

?

? ? ? ? ?}?

?

?

? ? ? ? ?return buffer.toString();?

?

?

? ? ? }

?

?

??

?

?

?其中的 > tree.txt可以把執(zhí)行這個(gè)指令的結(jié)果重新定向到一個(gè)文件里面,比如執(zhí)行dir,tree等指令的時(shí)候。

?

?

??

?

?

??

?

?

?如果要執(zhí)行dos以外的指令,需要指定執(zhí)行工作目錄,

?

?

??

?

?

?比如執(zhí)行某個(gè)exe程序的話,利用了Runtime的

?exec (?

?String [] cmdarray,??

?String [] envp,??

?File? dir)方法來(lái)實(shí)現(xiàn)。File是這個(gè)exe程序的目錄。?

?

?

??

?

?

?String[] cmds = {"cmd.exe","/c","radmin.exe"};

?

?

? ? ? ? ? try {

?

?

? ? ? ? ? ? ?Process ps = Runtime.getRuntime().exec(cmds,null,new File("C://Program Files//Radmin"));?

?

?

? ? ? ? ? ? ?System.out.print(loadStream(ps.getInputStream()));?

?

?

? ? ? ? ? ? ?System.err.print(loadStream(ps.getErrorStream()));?

?

?

? ? ? ? ?} catch(IOException ioe) {?

?

?

? ? ? ? ? ? ?ioe.printStackTrace();?

?

?

? ? ? ? ? }

總結(jié)

以上是生活随笔為你收集整理的[转载] Java中Runtime的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

亚洲欧美999| 91完整版 | 中文字幕色综合网 | 国产一级在线播放 | 999热视频| 91成熟丰满女人少妇 | 日韩精品一区二区免费视频 | 国产精品一区二区av影院萌芽 | 天堂va欧美va亚洲va老司机 | 久草免费色站 | 美女视频永久黄网站免费观看国产 | 欧美日韩免费网站 | 日韩午夜网站 | 在线看黄网站 | 在线观看片 | 在线视频欧美精品 | 欧洲色吧 | 日韩av一区二区在线影视 | 主播av在线 | 国产精品美女免费 | 丁香久久激情 | 久久午夜精品影院一区 | 国产黄色精品在线 | 激情五月网站 | 超碰在线人人艹 | 五月天综合色 | 中文字幕av播放 | 国产裸体永久免费视频网站 | 久久久免费播放 | 最新亚洲视频 | 亚洲精品视频一二三 | 中文字幕频道 | 久久一区二区三区超碰国产精品 | 人人操日日干 | 精品国产成人在线影院 | 久久久国产精品视频 | 992tv在线观看网站 | 免费看片日韩 | 91成人精品| 亚洲欧美日韩在线看 | 久久草精品 | 日韩伦理一区二区三区av在线 | 久久婷婷五月综合色丁香 | 亚洲三级av | 黄色的网站在线 | 国产精品99精品久久免费 | 久久综合欧美精品亚洲一区 | 亚洲人成人在线 | 国产精品夜夜夜一区二区三区尤 | 国产视频一区在线 | 丁香免费视频 | 蜜桃视频精品 | 亚洲欧美日本国产 | 黄色免费网战 | 日韩av一区二区三区 | 日b黄色片 | 中文字幕在线观看不卡 | 最新日韩在线观看视频 | 色妞久久福利网 | 天天曰天天爽 | 国产天天综合 | 在线观看不卡的av | 亚洲精品国产精品国自产观看浪潮 | 在线播放一区二区三区 | 99热这里只有精品国产首页 | 国产夫妻自拍av | 精品欧美小视频在线观看 | 亚洲人毛片 | 99久国产 | 麻豆影视在线观看 | 欧洲精品亚洲精品 | 美女久久久久久 | 香蕉视频国产在线 | 91九色视频导航 | 字幕网资源站中文字幕 | 日日日网| 亚洲黄色成人网 | 久久久久一区二区三区 | 国产精品12 | 黄色a一级片 | 蜜臀av性久久久久av蜜臀三区 | 99久久精品无免国产免费 | 国产精品国产三级国产aⅴ无密码 | 91丨九色丨91啦蝌蚪老版 | 综合色站导航 | 亚洲精品自拍视频在线观看 | 日韩在线在线 | 免费开视频 | 狠狠插狠狠干 | 国产成人一二三 | 91久久精品一区二区三区 | 成人app在线免费观看 | 成人在线观看免费视频 | 少妇啪啪av入口 | 91精品国产乱码在线观看 | 日日夜夜天天干 | 国产一二三四在线视频 | 亚洲精品中文在线观看 | 亚洲免费av片| 成人一级影视 | 五月婷久久 | 91免费网| 久久免费视频网站 | 欧美日韩一区二区免费在线观看 | 夜夜狠狠 | 99精品久久久久久久 | 日韩一二三 | 麻豆国产精品va在线观看不卡 | 91久久电影| 亚洲视频资源在线 | 国产高清精品在线观看 | 免费看久久 | 久久久久一区二区三区四区 | 成人免费视频网址 | 99久久夜色精品国产亚洲 | 亚洲免费精品一区二区 | 超碰免费成人 | 国产高清在线看 | 丁香婷婷射 | 免费午夜av | 1000部18岁以下禁看视频 | 国产又粗又猛又黄视频 | 国产剧情在线一区 | 青青草华人在线视频 | 亚洲精品美女在线 | 国产女v资源在线观看 | 91亚洲精品乱码久久久久久蜜桃 | 高清av影院| 美女福利视频在线 | 黄色大片中国 | 国产精品原创在线 | 免费av网址大全 | 欧美日韩国产色综合一二三四 | 日韩国产精品一区 | 91手机在线看片 | 欧美激情精品 | 六月色婷 | 狠狠色噜噜狠狠狠狠 | 国产黄色在线观看 | 国产福利91精品 | 亚洲天堂网视频在线观看 | 国产亚洲成av人片在线观看桃 | 久草网站在线观看 | 亚洲日本国产 | 97在线看片 | 激情五月在线观看 | 亚洲国产成人久久 | 丁香激情综合 | 四虎永久免费在线观看 | 久久久免费观看完整版 | 96久久精品 | 99视频国产精品免费观看 | 日韩在线大片 | 日日精品| 亚洲欧美日韩国产精品一区午夜 | 国产午夜一区 | 在线播放国产精品 | 美女网站在线观看 | 色妞色视频一区二区三区四区 | 欧美地下肉体性派对 | 亚洲精品乱码久久久久久蜜桃不爽 | av电影在线免费 | 狠狠色丁香久久婷婷综 | 久久久91精品国产 | 欧美精品乱码99久久影院 | 久久久免费国产 | 五月婷婷av | 日韩一级成人av | 成人免费在线观看av | 免费观看mv大片高清 | 激情婷婷综合网 | 成人黄色大片在线观看 | 超碰999 | 狠狠躁夜夜a产精品视频 | 91污污 | 干干干操操操 | 在线视频日韩精品 | 色偷偷97 | av成人免费在线观看 | 国产精品久久久久久久久久久杏吧 | 99九九99九九九视频精品 | 久久一久久 | 久久久999免费视频 日韩网站在线 | 麻豆精品在线 | 欧美精品一区二区三区四区在线 | 国产最新91 | 三级黄色在线 | 天天操天天操天天操天天操天天操天天操 | 国产一区二区不卡视频 | 国内视频在线 | 中文字幕超清在线免费 | 亚洲va天堂va欧美ⅴa在线 | 成人在线免费视频 | 国产精品久一 | 亚洲成人高清在线 | 97成人精品区在线播放 | 五月婷婷在线观看 | 亚洲一区 av | 中文字幕在线观看资源 | 日本精a在线观看 | 美女搞黄国产视频网站 | 中文字幕av免费 | 草久久久久| 欧美一级艳片视频免费观看 | 久久五月天色综合 | 美女精品久久久 | 国产视频一区在线 | 日韩精品一区二区三区高清免费 | 天天操夜操| 丁香五月亚洲综合在线 | 亚洲精品777 | 国产一级片不卡 | 四虎永久免费网站 | 亚洲日本成人 | 天天操福利视频 | 91在线中文字幕 | 精品国产伦一区二区三区观看说明 | 天天爱天天爽 | 免费观看版 | 999视频在线播放 | 狠狠干电影 | 免费久久视频 | 国产系列精品av | 又黄又爽又色无遮挡免费 | 天天爽天天摸 | 又污又黄网站 | 激情视频免费在线 | 成人激情开心网 | 久久久国产在线视频 | 欧美激情综合色综合啪啪五月 | 中文字幕免费国产精品 | 国产一区国产二区在线观看 | 国产精品大尺度 | 国产亚洲婷婷免费 | 天天曰天天 | 亚洲精品www久久久久久 | 在线国产能看的 | 黄色官网在线观看 | 天天干天天在线 | av在线之家电影网站 | 超碰国产人人 | 中文字幕亚洲欧美日韩2019 | 91网站在线视频 | 在线视频区 | 成人在线你懂得 | 久久精品成人 | 97超碰站| 激情视频亚洲 | 人人超碰人人 | 久久久精品国产一区二区 | 亚洲美女精品 | 日批在线看 | 久草在线手机观看 | 91色欧美| 欧美日韩高清国产 | 一区二区三区久久精品 | 99综合电影在线视频 | 欧美黄在线 | 久久免费国产精品1 | 色婷婷在线视频 | 国产资源精品 | 免费人人干 | 91亚洲精品在线 | 玖玖在线资源 | 亚洲成av人影片在线观看 | 92精品国产成人观看免费 | 热久久99这里有精品 | 国产黑丝袜在线 | 在线免费黄色片 | 亚洲天堂首页 | 亚洲国产人午在线一二区 | 九九精品视频在线 | 亚洲欧美日韩国产一区二区三区 | 色综合咪咪久久网 | av电影在线免费观看 | 日日日天天天 | 黄色亚洲大片免费在线观看 | 亚洲aⅴ免费在线观看 | 日韩电影久久久 | 国产主播大尺度精品福利免费 | 久久久黄色免费网站 | www178ccom视频在线 | 欧美精品久久久久久久 | 亚洲永久精品在线观看 | 激情婷婷久久 | 日韩电影在线观看一区 | 婷婷色综合色 | 国产福利在线免费观看 | www.久久久久 | 久久免费精品一区二区三区 | 亚洲免费视频观看 | 久久a免费视频 | 中文字幕免费中文 | 狠狠色丁香婷综合久久 | 亚洲经典中文字幕 | 婷婷四房综合激情五月 | 亚洲精品大全 | www.福利视频 | 人人插人人插 | 亚洲精品大全 | 99国产精品免费网站 | 日本大片免费观看在线 | 中文一区二区三区在线观看 | 麻豆91在线看| 国产精品成人一区二区三区吃奶 | 最新精品视频在线 | 日韩免费观看一区二区 | 亚洲精品网址在线观看 | 久久久国产精华液 | 黄网站免费看 | 久久影院午夜论 | 午夜精品一区二区三区可下载 | 国产精品一区二区62 | 一级黄色片在线观看 | 成人av高清在线观看 | 欧美国产视频在线 | 亚洲成a人片在线观看网站口工 | 最近中文字幕大全 | 久久成人人人人精品欧 | 91精品办公室少妇高潮对白 | 欧美国产日韩一区二区三区 | 婷婷在线色| 久九视频 | 永久免费毛片在线观看 | 久久www免费人成看片高清 | 超碰在线最新网址 | 婷婷色中文字幕 | 美国人与动物xxxx | 在线观看免费av网站 | 麻豆一区在线观看 | 99热这里只有精品1 av中文字幕日韩 | 五月天色中色 | 久久高清精品 | 日本精品视频一区二区 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 人人草人人草 | 中文字幕亚洲欧美日韩2019 | 天天操天天舔天天爽 | 久久综合九色综合欧美就去吻 | 九九热在线精品视频 | 色婷婷av在线 | 久久久久综合 | 日韩av黄 | 丁香婷婷在线 | 91手机电视 | 日韩欧美亚州 | 永久免费在线 | 亚洲人成人在线 | 国产99久久精品一区二区永久免费 | 午夜在线免费视频 | 欧美日韩国产网站 | 日韩久久久| 亚洲小视频在线 | 五月色丁香 | 美女网站黄在线观看 | 91麻豆精品国产91久久久无需广告 | 中文在线a∨在线 | 欧美午夜剧场 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 在线看国产一区 | 成人精品99| 2019天天干夜夜操 | 日韩免费电影网站 | 91久久国产露脸精品国产闺蜜 | 免费视频色 | 精品视频一区在线观看 | 日日爱视频 | 亚洲一级黄色大片 | 免费看日韩 | 国产精品午夜免费福利视频 | 视频一区亚洲 | 九九九九精品九九九九 | 日韩欧美高清 | 欧美电影黄色 | 不卡视频一区二区三区 | 一本一道久久a久久综合蜜桃 | 麻豆免费在线视频 | 中文字幕在线日亚洲9 | 在线观看www视频 | 亚洲精欧美一区二区精品 | 亚洲欧洲日韩 | 国产韩国日本高清视频 | 亚洲成人黄色在线 | 国产精品成人自拍 | 色在线高清 | 一区在线观看 | 日韩在线观看视频网站 | 国产精品久久99综合免费观看尤物 | 玖玖在线看 | 好看av在线 | 精品一区精品二区 | 国产96在线视频 | 国产电影黄色av | 久久精品综合一区 | 国产精品美女久久 | 亚洲精品视频网址 | 欧美激情第八页 | 亚洲精品国偷拍自产在线观看 | 91免费高清| 综合久久五月天 | 福利一区在线视频 | 成人免费在线看片 | 91污视频在线 | 亚洲黄电影 | 国产精品久久久久一区二区三区共 | 久久人人插 | 日韩免费一级a毛片在线播放一级 | 国产高清在线精品 | 亚洲精品小视频 | 在线观看视频一区二区 | 日韩欧美高清一区二区三区 | 一区二区精品在线观看 | 久久一区二区三区日韩 | 五月导航 | 免费色网 | av东方在线 | 亚洲一区欧美精品 | 久久久久一区二区三区 | 91在线网站 | 亚洲综合欧美精品电影 | 蜜臀久久99精品久久久酒店新书 | 日操操 | 在线 成人 | 久久人人97超碰国产公开结果 | 日韩av电影中文字幕 | 在线观看免费av网 | 81精品国产乱码久久久久久 | 欧美成人h版电影 | 四虎成人精品在永久免费 | 国产在线超碰 | 2017狠狠干 | 特级毛片在线 | 欧美精品乱码久久久久 | 亚洲一级黄色片 | 黄网站a| 久久综合干 | 日韩精品免费一线在线观看 | 成人h动漫精品一区二 | 97视频资源 | 久久免费av电影 | 婷婷亚洲最大 | 欧美一级电影免费观看 | 一区精品在线 | 日本精品va在线观看 | 久久婷婷丁香 | 九九有精品 | 色综合久久88色综合天天6 | 爱情影院aqdy鲁丝片二区 | 99久久99久久精品免费 | 在线色资源| 国产一区二区久久 | 久久黄色小说 | 91在线免费观看国产 | 午夜视频黄 | 狠狠色噜噜狠狠 | 999久久国产 | www.91成人| 久久久久久国产精品 | 99久久久久免费精品国产 | 久久夜色精品国产亚洲aⅴ 91chinesexxx | 成年人视频免费在线 | 日本h视频在线观看 | 欧美日韩在线视频一区 | 欧美日韩在线观看一区二区三区 | 丁香五香天综合情 | 日韩成人在线一区二区 | 久日视频 | 天天综合网 天天 | 亚洲涩涩网站 | 欧美精品久久人人躁人人爽 | se视频网址| 国产999精品久久久久久绿帽 | 欧美成人一二区 | 久久精品4| 中文字幕成人av | 国内精品免费久久影院 | 日韩欧美在线视频一区二区 | 国产91欧美 | 欧美在线一二 | 日日干精品 | 成人久久网 | 亚洲 欧美 日韩 综合 | 99热手机在线 | 91视频免费 | www.五月天婷婷 | 亚洲精品乱码久久久一二三 | 97超视频免费观看 | 精品一区二三区 | 在线不卡视频 | 婷婷国产精品 | 久久综合久久88 | 在线观看成人一级片 | 久久久久二区 | 激情五月婷婷丁香 | 在线观看精品国产 | 国产欧美在线一区二区三区 | 一区二区三区手机在线观看 | 在线观看不卡的av | 欧美日韩国产综合一区二区 | 国产精品一区二区免费 | 日韩成人精品一区二区三区 | 中文字幕一区二区三区久久蜜桃 | 成人免费视频播放 | 国产精品少妇 | 91porny九色91啦中文 | 夜夜操狠狠干 | 国产精品久久9 | 欧美日韩国产高清视频 | 久久艹国产视频 | 中文字幕一区二区三区在线视频 | 不卡av电影在线 | 成人中心免费视频 | 婷婷亚洲综合五月天小说 | 日韩午夜剧场 | 国产精品一区二区中文字幕 | 91亚洲影院| 奇米影视8888在线观看大全免费 | 成人av在线影视 | 最近日本mv字幕免费观看 | 综合久久久久 | 中文字幕亚洲精品日韩 | 国产麻豆精品免费视频 | 波多野结衣电影一区二区三区 | 人人爱天天操 | 深爱激情开心 | 亚洲永久精品一区 | 国产在线精品观看 | 制服丝袜成人在线 | 日韩在线观看你懂的 | 日韩精品2区| 亚洲国产成人精品在线 | 国产高清视频免费 | 精品一区二区三区在线播放 | 欧美色综合 | 婷婷六月网 | 一区二区 精品 | 久久国产精品一国产精品 | 欧美一级片免费 | 亚洲国内精品在线 | 夜夜骑日日 | 99热超碰在线 | 91九色免费视频 | 成 人 黄 色 片 在线播放 | 91成人精品国产刺激国语对白 | 97涩涩视频 | 亚洲美女精品区人人人人 | 天堂视频一区 | 一区二区三区在线观看免费 | 射综合网 | zzijzzij日本成熟少妇 | 色a在线观看 | 97超碰资源 | 在线一二区 | 99精品国产视频 | 成人国产精品一区 | 在线观看日韩专区 | 国产久草在线观看 | 久久综合精品国产一区二区三区 | 久久国产精品网站 | 国产女人免费看a级丨片 | 激情五月婷婷激情 | 91大神在线观看视频 | 日韩视频在线一区 | 91精品导航 | 国产麻豆电影 | 狠狠色狠狠色综合日日92 | 欧美日韩精品影院 | 天天插天天 | 天天天色综合a | 亚洲 欧洲 国产 日本 综合 | 亚洲精品在线观看免费 | 高清不卡一区二区三区 | 丁香av| 国产亚洲精品久久久久久大师 | 久久伦理视频 | 日韩va欧美va亚洲va久久 | 久久美女精品 | 成人欧美日韩国产 | 狠狠色伊人亚洲综合成人 | 久草电影在线观看 | 99精品在线直播 | 成人一级| 超碰在线日本 | 久久精品网址 | 开心丁香婷婷深爱五月 | 日韩激情视频在线观看 | 伊人黄 | 久久不卡日韩美女 | 人人擦| 免费亚洲一区二区 | 天天操狠狠操夜夜操 | 91久久偷偷做嫩草影院 | 国产精品成人免费精品自在线观看 | 一区二区中文字幕在线观看 | 麻豆视频免费入口 | 国产精品免费久久久久久久久久中文 | 亚洲精品777 | 日本巨乳在线 | 亚洲综合情 | 国产一区二区三区免费在线观看 | 久久成人18免费网站 | 美女久久精品 | 久久综合免费视频影院 | 九九热在线精品视频 | 91九色精品国产 | 一区二区三区在线观看免费 | 久久精品99国产精品日本 | 中文字幕免费 | 在线观看免费色 | 婷婷亚洲综合五月天小说 | 日日夜夜天天久久 | 在线免费中文字幕 | 亚洲欧美国内爽妇网 | 欧美日韩中文字幕在线视频 | 国产麻豆果冻传媒在线观看 | 亚洲更新最快 | 欧美性大战久久久久 | 狠狠干天天射 | 久插视频 | 久久99热精品这里久久精品 | 婷婷精品国产欧美精品亚洲人人爽 | 综合亚洲视频 | 中文字幕在线精品 | 五月婷香蕉久色在线看 | 99热在线网站 | 欧美日韩一区二区免费在线观看 | 国产在线永久 | 久久这里只有精品9 | 九九热在线免费观看 | 国产精品午夜久久久久久99热 | 国产精品va在线播放 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 久久免费国产视频 | 色av男人的天堂免费在线 | 色综合久久久久 | 日本黄色大片儿 | 夜夜操天天操 | 精品欧美在线视频 | 国产精品入口a级 | 国产精品精品国产婷婷这里av | 久久天天躁狠狠躁亚洲综合公司 | 91九色蝌蚪国产 | 成人午夜剧场在线观看 | 色婷婷视频在线观看 | 综合色狠狠 | 欧美aaa视频| 日韩大片在线观看 | 在线日韩中文字幕 | 国产在线观看你懂得 | 日日夜夜添| 免费视频久久 | 亚洲日本va午夜在线电影 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 久久成年人视频 | 亚洲国产精品一区二区久久,亚洲午夜 | 精品福利在线视频 | 欧美 激情在线 | 久久久久国产一区二区三区四区 | 成人a视频 | 成人免费在线视频 | 精品国产乱码久久久久久浪潮 | 日韩系列在线 | 丁香 婷婷 激情 | 天天插伊人 | 草久电影| 天天色天天搞 | 日本不卡一区二区三区在线观看 | 国产高清亚洲 | 99热高清 | 中文字幕视频三区 | 国产精品在线看 | 五月激情亚洲 | 一区 二区 精品 | 久久嗨 | 国产一区私人高清影院 | 婷婷精品国产一区二区三区日韩 | 久久久久综合 | 黄污视频网站大全 | 久久激情视频 久久 | 免费一级特黄录像 | 亚洲欧美日韩精品久久奇米一区 | 亚洲一区天堂 | 成人试看120秒 | 免费在线色| 久久久综合九色合综国产精品 | 97久久久免费福利网址 | 四虎免费在线观看 | 激情久久综合 | 黄色免费观看网址 | 成人国产精品久久久春色 | 欧美最猛性xxxxx免费 | 日韩中文字幕免费在线播放 | www.狠狠操.com | 天天摸天天舔 | 国产成人综 | av大全在线播放 | 久久69精品久久久久久久电影好 | 日韩经典一区二区三区 | 亚洲成人av电影在线 | 96av麻豆蜜桃一区二区 | 欧美日韩视频一区二区 | 91热爆视频 | 视频二区在线视频 | 日韩无在线 | 四虎在线观看视频 | 超碰人人做 | 99在线免费视频 | 久久午夜鲁丝片 | 男女全黄一级一级高潮免费看 | 在线免费色视频 | 久草在线资源网 | 亚洲视频每日更新 | 亚洲最新在线视频 | 国产涩涩在线观看 | 久久国产精品久久精品 | 视频国产 | 欧美粗又大 | 日韩a在线 | 国产分类视频 | 久久激情影院 | 91香蕉亚洲精品 | 久久人人97超碰com | 最近中文字幕视频网 | 久久亚洲婷婷 | 久久综合在线 | 这里只有精品视频在线观看 | 久草免费色站 | 亚洲va综合va国产va中文 | 久久在线免费视频 | 在线看片日韩 | 96久久 | 99爱精品视频 | 91一区二区三区久久久久国产乱 | 色姑娘综合天天 | 欧美一二三在线 | 中国一级特黄毛片大片久久 | 在线观看电影av | 久久精品视频国产 | 美女一二三区 | 欧美激情视频一区二区三区免费 | 亚洲黄色免费电影 | 国产高清免费视频 | 男女拍拍免费视频 | 噜噜色官网 | 亚洲国产婷婷 | 成人电影毛片 | 亚洲人天堂 | 中文一区二区三区在线观看 | 亚洲毛片视频 | 91精品国产自产91精品 | 91一区二区三区久久久久国产乱 | 国产小视频在线免费观看 | 永久免费观看视频 | 国产精品美女久久久久久久 | 91欧美精品| 超碰97国产精品人人cao | 日韩成人精品一区二区 | 97av精品 | 69久久久 | 97精品国产aⅴ | 国产麻豆视频网站 | 国产成人精品一区二区三区在线观看 | 国产精品99久久久久久小说 | a视频在线观看 | 日韩精品一区在线播放 | 久久久久久久国产精品影院 | 奇米777777 | 91视频在线免费 | 国产精品一区二区三区久久久 | 免费av免费观看 | 国产精品久久久99 | 99草在线视频| 国产最新在线视频 | 亚洲精品午夜一区人人爽 | 欧美久久久久久久久久久久 | 中文字幕免费一区二区 | 国产精品一区二区久久精品爱微奶 | 国产白浆在线观看 | 亚洲乱码一区 | 久久综合色播五月 | 婷婷在线视频 | 亚州精品在线视频 | av观看免费在线 | 美女免费电影 | 人人干人人上 | 九九热在线免费观看 | 成年人在线免费看片 | 日韩精品91偷拍在线观看 | 九色porny真实丨国产18 | 色九九影院 | 天堂在线v | 五月婷婷激情综合网 | 日韩在线播放欧美字幕 | 国产精品久久久久9999 | 中文字幕免费观看全部电影 | 欧美一区二区三区激情视频 | 9在线观看免费高清完整版 玖玖爱免费视频 | 精品视频不卡 | 五月婷影院| 免费激情在线电影 | 永久精品视频 | 日韩av一区二区三区 | 欧美国产不卡 | 日韩av电影手机在线观看 | 91精品成人| 97精品国产97久久久久久免费 | 91字幕| 国产福利在线免费观看 | 久久字幕网 | 免费在线视频一区二区 | 国产视频在线观看一区 | 一级片视频免费观看 | 免费裸体视频网 | 欧美在线aa | 天天色天天干天天色 | 中文字幕丰满人伦在线 | 精品久久久久国产免费第一页 | www.五月天色| 99国产一区二区三精品乱码 | 亚洲国产精选 | 中文字幕欧美日韩va免费视频 | 国产精品成久久久久 | 综合久久网站 | 国产精品久久久久久久久久不蜜月 | 最新婷婷色 | 色综合久久88色综合天天人守婷 | 中文字幕在线日 | 久久亚洲精品国产亚洲老地址 | 国产精品免费在线播放 | 91在线观看高清 | 久草免费色站 | 亚洲,国产成人av | 欧美一二三区播放 | 国产小视频国产精品 | 婷婷99| 激情综合网色播五月 | 日韩免费在线观看网站 | 精品日韩av| 亚州成人av在线 | 亚洲伊人第一页 | 亚洲精品人人 | 精品国产乱码一区二 | 人人射人人 | 久久免费在线观看视频 | 91成人免费视频 | 国产一区二区免费看 | 中文字幕在线观看完整 | 日韩久久网站 | 久久久www成人免费精品张筱雨 | 在线观看国产福利片 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 久久精品专区 | 国产五十路毛片 | 日韩在线高清免费视频 | av官网| 日韩在线视频免费播放 | 青草视频免费观看 | 亚洲精品在线视频观看 | 国产一区二区免费 | 九九久久久久久久久激情 | 亚洲理论在线观看电影 | 奇米影视在线99精品 | 在线午夜电影神马影院 | 久久精品99精品国产香蕉 | 探花视频在线观看 | 超碰97在线看 | 国产一级片免费观看 | 五月婷婷国产 | 国产精品久久久久免费 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 西西444www| 婷婷综合视频 | 99久久精品国产亚洲 | 天天综合狠狠精品 | 日韩av有码在线 | 精品在线播放 | 99精品小视频 | 天天色天天操综合 | 亚洲精品午夜久久久 | 天天干,天天射,天天操,天天摸 | 91在线播放综合 | 国产精品毛片一区视频 | 色中色综合 | 久草av在线播放 | 久久高清 | 天天综合91| 国内精品久久影院 | 日韩在线电影 | 97偷拍在线视频 | 欧美一区二区三区免费观看 | a在线播放 | 在线观看视频一区二区三区 | 91视频链接 | 精品产品国产在线不卡 | 日韩久久午夜一级啪啪 | 最新av网址在线 | 女人18片毛片90分钟 | 亚洲精品在线观看免费 | 日韩二区三区在线 | av大片网站| 干干干操操操 | 成人影视免费 | 天干啦夜天干天干在线线 | zzijzzij亚洲成熟少妇 | 在线免费黄色片 | 成年人免费电影 | 麻豆传媒视频在线免费观看 | 精品视频免费久久久看 | 国产成人精品999在线观看 | 欧美日韩1区 | 久久一久久 | 九九热在线免费观看 | 天天躁天天狠天天透 | 日韩二三区 | 日韩成人高清在线 | 天天操 夜夜操 | 日韩免费中文字幕 | 日韩亚洲国产中文字幕 | 九色精品在线 | 久草在线高清视频 | 色偷偷97| av中文在线 | 精品国产精品久久一区免费式 | 肉色欧美久久久久久久免费看 | 国产视频一区二区三区在线 | 精品成人a区在线观看 | 日韩高清av在线 | 97电影院在线观看 | 久久99精品国产麻豆宅宅 | 国产高清免费在线播放 | 免费日韩电影 | 亚洲视频电影在线 | 欧美日韩视频在线观看免费 | av久久久久久 | 久热免费在线 | 成人免费亚洲 | 久热爱| 国产精品视频全国免费观看 | 日日夜夜操操操操 | 日韩av黄 | 久青草视频 | 美女精品久久 | 日韩视频免费在线观看 | 黄色www在线观看 | 日韩精品在线免费观看 | 狠狠综合久久 | 日韩中文字幕在线观看 | 日韩视频免费在线观看 | 高清av中文在线字幕观看1 | 国产精品国产自产拍高清av | 亚洲日本一区二区在线 | aaa日本高清在线播放免费观看 | 国产精品成人一区二区三区吃奶 | 国产一区二区久久精品 | 色综合久久久久久久 | 国精产品满18岁在线 | 精品一区二区三区电影 | 91精品国产99久久久久久红楼 | 91九色网站| 亚洲国产999 | 中文资源在线播放 | 91观看视频| 又爽又黄又刺激的视频 | 久久免费看a级毛毛片 | 色婷婷狠 | 日本特黄一级片 | 看污网站 | 久久中文字幕导航 | 日本在线观看中文字幕 | 人人爽人人澡人人添人人人人 | 日韩大片在线观看 | 免费av影视| 欧美午夜视频在线 | 成人禁用看黄a在线 | 国产精品成人一区 | 9i看片成人免费看片 | 91精品视频免费看 | 国产精品去看片 | 亚洲天堂va | 中国一级片免费看 | 成人国产电影在线观看 | 国产精品美女久久久网av | 狠狠色伊人亚洲综合网站野外 | 亚洲色视频 | 91视频高清完整版 | 亚州国产精品视频 | av片中文字幕| 色婷婷婷| 日日干综合 | 五月婷婷激情五月 | 又黄又刺激的网站 | 久久久久久久久久久久久久电影 | 成人免费中文字幕 | 日韩欧美一区二区三区免费观看 | 国产精品久久久久久久久久新婚 | 绯色av一区| 久久久久久久网 |