processbuilder.html
来自「j2se5-api-zh,java文档的中文版本」· HTML 代码 · 共 559 行 · 第 1/3 页
HTML
559 行
<p>返回的映射的行为取决于系统。系统可能不允许修改环境变量或禁止某些变量名或变量值。出于此原因,如果不允许操作系统修改的话,试图修改映射可能失败,并抛出 <A HREF="UnsupportedOperationException.html" title="java.lang 中的类"><CODE>UnsupportedOperationException</CODE></A> 或 <A HREF="IllegalArgumentException.html" title="java.lang 中的类"><CODE>IllegalArgumentException</CODE></A>。<p>由于环境变量名和值的外部格式取决于系统,在它们与 Java 的 Unicode 字符串之间不可能是一对一映射。此外,映射以这种方式实现:不能由 Java 代码修改的环境变量在子进程中将有一个不可修改的本机表示形式。<p>返回的映射及其集合视图不能遵守 <A HREF="Object.html#equals(java.lang.Object)"><CODE>Object.equals(java.lang.Object)</CODE></A> 和 <A HREF="Object.html#hashCode()"><CODE>Object.hashCode()</CODE></A> 方法的常规协定。<p>返回的映射通常在所有平台上都是区分大小写的。<p>如果安全管理器存在,则其 <A HREF="SecurityManager.html#checkPermission(java.security.Permission)"><CODE>checkPermission</CODE></A> 方法通过 <code><A HREF="RuntimePermission.html" title="java.lang 中的类"><CODE>RuntimePermission</CODE></A>("getenv.*")</code> 权限进行调用。这可能导致抛出 <A HREF="SecurityException.html" title="java.lang 中的类"><CODE>SecurityException</CODE></A>。<p>当将信息传递给 Java 子进程时,<a href=System.html#EnvironmentVSSystemProperties>系统属性</a>通常优先于环境变量。</p><P><DD><DL><DT><B>返回:</B><DD>此进程生成器的环境<DT><B>抛出:</B><DD><CODE><A HREF="SecurityException.html" title="java.lang 中的类">SecurityException</A></CODE> - 如果安全管理器存在并且其 <A HREF="SecurityManager.html#checkPermission(java.security.Permission)"><CODE>checkPermission</CODE></A> 方法不允许访问进程环境<DT><B>另请参见:</B><DD><A HREF="Runtime.html#exec(java.lang.String[], java.lang.String[], java.io.File)"><CODE>Runtime.exec(String[],String[],java.io.File)</CODE></A>, <A HREF="System.html#getenv()"><CODE>System.getenv()</CODE></A></DL></DD></DL><HR><A NAME="directory()"><!-- --></A><H3>directory</H3><PRE>public java.io.File <B>directory</B>()</PRE><DL><DD>返回此进程生成器的工作目录。由此对象的 <A HREF="ProcessBuilder.html#start()"><CODE>start()</CODE></A> 方法启动的后续子进程将使用此目录作为它们的工作目录。返回值可以为 <code>null</code>——这意味着要使用当前 Java 进程的工作目录,通常是由系统属性 <code>user.dir</code> 指定的目录作为子进程的工作目录。</p><P><DD><DL><DT><B>返回:</B><DD>此进程生成器的工作目录</DL></DD></DL><HR><A NAME="directory(java.io.File)"><!-- --></A><H3>directory</H3><PRE>public <A HREF="ProcessBuilder.html" title="java.lang 中的类">ProcessBuilder</A> <B>directory</B>(java.io.File directory)</PRE><DL><DD>设置此进程生成器的工作目录。由此对象的 <A HREF="ProcessBuilder.html#start()"><CODE>start()</CODE></A> 方法启动的后续子进程将使用此目录作为它们的工作目录。参数可以为 <code>null</code>——这意味着要使用当前 Java 进程的工作目录,通常是由系统属性 <code>user.dir</code> 指定的目录作为子进程的工作目录。</p><P><DD><DL><DT><B>参数:</B><DD><CODE>directory</CODE> - 新的工作目录<DT><B>返回:</B><DD>此进程生成器</DL></DD></DL><HR><A NAME="redirectErrorStream()"><!-- --></A><H3>redirectErrorStream</H3><PRE>public boolean <B>redirectErrorStream</B>()</PRE><DL><DD>通知进程生成器是否合并标准错误和标准输出。<p>如果此属性为 <code>true</code>,则任何由通过此对象的 <A HREF="ProcessBuilder.html#start()"><CODE>start()</CODE></A> 方法启动的后续子进程生成的错误输出都将与标准输出合并,因此两者均可使用 <A HREF="Process.html#getInputStream()"><CODE>Process.getInputStream()</CODE></A> 方法读取。这使得关联错误消息和相应的输出变得更容易。初始值为 <code>false</code>。</p><P><DD><DL><DT><B>返回:</B><DD>此进程生成器的 <code>redirectErrorStream</code> 属性</DL></DD></DL><HR><A NAME="redirectErrorStream(boolean)"><!-- --></A><H3>redirectErrorStream</H3><PRE>public <A HREF="ProcessBuilder.html" title="java.lang 中的类">ProcessBuilder</A> <B>redirectErrorStream</B>(boolean redirectErrorStream)</PRE><DL><DD>设置此进程生成器的 <code>redirectErrorStream</code> 属性。<p>如果此属性为 <code>true</code>,则任何由通过此对象的 <A HREF="ProcessBuilder.html#start()"><CODE>start()</CODE></A> 方法启动的后续子进程生成的错误输出都将与标准输出合并,因此两者均可使用 <A HREF="Process.html#getInputStream()"><CODE>Process.getInputStream()</CODE></A> 方法读取。这使得关联错误消息和相应的输出变得更容易。初始值为 <code>false</code>。</p><P><DD><DL><DT><B>参数:</B><DD><CODE>redirectErrorStream</CODE> - 新的属性值<DT><B>返回:</B><DD>此进程生成器</DL></DD></DL><HR><A NAME="start()"><!-- --></A><H3>start</H3><PRE>public <A HREF="Process.html" title="java.lang 中的类">Process</A> <B>start</B>() throws java.io.IOException</PRE><DL><DD>使用此进程生成器的属性启动一个新进程。<p>在 <A HREF="ProcessBuilder.html#directory()"><CODE>directory()</CODE></A> 指定的工作目录中,利用 <A HREF="ProcessBuilder.html#environment()"><CODE>environment()</CODE></A> 指定的进程环境,新进程将调用由 <A HREF="ProcessBuilder.html#command()"><CODE>command()</CODE></A> 给出的命令和参数。<p>此方法检查命令是否为一条有效的操作系统命令。哪条命令是有效的呢?这取决于系统,但至少命令必须是非空字符串的非空列表。<p>如果有安全管理器,则用此对象的 <code>command</code> 数组的首个元素作为其参数来调用安全管理器的 <A HREF="SecurityManager.html#checkExec(java.lang.String)"><CODE>checkExec</CODE></A> 方法。这可能导致抛出 <A HREF="SecurityException.html" title="java.lang 中的类"><CODE>SecurityException</CODE></A>。<p>启动操作系统进程的方式完全取决于系统。其中有很多方面会导致错误:<ul><li>未找到操作系统程序文件。<li>对程序文件的访问被拒绝。<li>工作目录不存在。</ul><p>在这些情况中将会抛出一个异常。该异常的具体本质取决于系统,但它总是 <CODE>IOException</CODE> 的一个子类。<p>针对此进程生成器的后续修改将不会影响返回的 <A HREF="Process.html" title="java.lang 中的类"><CODE>Process</CODE></A>。</p><P><DD><DL><DT><B>返回:</B><DD>一个新的 <A HREF="Process.html" title="java.lang 中的类"><CODE>Process</CODE></A> 对象,用于管理子进程<DT><B>抛出:</B><DD><CODE><A HREF="NullPointerException.html" title="java.lang 中的类">NullPointerException</A></CODE> - 如果命令列表的元素为空<DD><CODE><A HREF="IndexOutOfBoundsException.html" title="java.lang 中的类">IndexOutOfBoundsException</A></CODE> - 如果命令是一个空列表(大小为 <code>0</code>)<DD><CODE><A HREF="SecurityException.html" title="java.lang 中的类">SecurityException</A></CODE> - 如果安全管理器存在并且其 <A HREF="SecurityManager.html#checkExec(java.lang.String)"><CODE>checkExec</CODE></A> 方法不允许创建子进程<DD><CODE>java.io.IOException</CODE> - 如果发生 I/O 错误<DT><B>另请参见:</B><DD><A HREF="Runtime.html#exec(java.lang.String[], java.lang.String[], java.io.File)"><CODE>Runtime.exec(String[], String[], java.io.File)</CODE></A>, <A HREF="SecurityManager.html#checkExec(java.lang.String)"><CODE>SecurityManager.checkExec(String)</CODE></A></DL></DD></DL><!-- ========= END OF CLASS DATA ========= --><HR><!-- ======= START OF BOTTOM NAVBAR ====== --><A NAME="navbar_bottom"><!-- --></A><A HREF="#skip-navbar_bottom" title="跳过导航链接"></A><TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY=""><TR><TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1"><A NAME="navbar_bottom_firstrow"><!-- --></A><TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY=""> <TR ALIGN="center" VALIGN="top"> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>概述</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>软件包</B></FONT></A> </TD> <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>类</B></FONT> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/ProcessBuilder.html"><FONT CLASS="NavBarFont1"><B>使用</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>树</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>已过时</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../index-files/index-1.html"><FONT CLASS="NavBarFont1"><B>索引</B></FONT></A> </TD> <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../help-doc.html"><FONT CLASS="NavBarFont1"><B>帮助</B></FONT></A> </TD> </TR></TABLE></TD><TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM><b>Java<sup><font size=-2>TM</font></sup> 2 Platform<br>Standard Ed. 5.0</b></EM></TD></TR><TR><TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> <A HREF="Process.html" title="java.lang 中的类"><B>上一个类</B></A> <A HREF="Readable.html" title="java.lang 中的接口"><B>下一个类</B></A></FONT></TD><TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2"> <A HREF="../../index.html@java_2Flang_2FProcessBuilder.html" target="_top"><B>框架</B></A> <A HREF="ProcessBuilder.html" target="_top"><B>无框架</B></A> <SCRIPT type="text/javascript"> <!-- if(window==top) { document.writeln('<A HREF="../../allclasses-noframe.html"><B>所有类</B></A>'); } //--></SCRIPT><NOSCRIPT> <A HREF="../../allclasses-noframe.html"><B>所有类</B></A></NOSCRIPT></FONT></TD></TR><TR><TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2"> 摘要: 嵌套 | 字段 | <A HREF="#constructor_summary">构造方法</A> | <A HREF="#method_summary">方法</A></FONT></TD><TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">详细信息: 字段 | <A HREF="#constructor_detail">构造方法</A> | <A HREF="#method_detail">方法</A></FONT></TD></TR></TABLE><A NAME="skip-navbar_bottom"></A><!-- ======== END OF BOTTOM NAVBAR ======= --><HR><font size="-1"><a href="../../../../../../../../java.sun.com/cgi-bin/bugreport.cgi">提交错误或意见</a><br>有关更多的 API 参考资料和开发人员文档,请参阅 <a href="../../../../../../../../java.sun.com/j2se/1.5.0/docs/relnotes/devdocs-vs-specs.html">Java 2 SDK SE 开发人员文档</a>。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。 <p>版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守<a href="../../../../../../../../java.sun.com/j2se/1.5.0/docs/relnotes/license.html">许可证条款</a>。另请参阅<a href="../../../../../../../../java.sun.com/docs/redist.html">文档重新分发政策</a>。</font></BODY></HTML>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?