package Ġcom . github . func zz . kotlin . extensions . stdlib Ċ Ċ import Ġjava . io . InputStream Ċ import Ġjava . io . OutputStream Ċ import Ġjava . util . concurrent . ExecutorService Ċ import Ġjava . util . concurrent . Executors Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ /** Ċ Ġ* Ġ< code > Process </ code > ĠãĤĴ çĶŁæĪĲ ãģĹãģ¦ ĠStream ĠãĤĴ åıĸ ãĤĬ æī ± ãģĨ ãĢĤ Ċ Ġ* Ġ@ param Ġtimeout Ġ< code > Process </ code > Ġãģ® ãĤ¿ãĤ¤ ãĥł ãĤ¢ ãĤ¦ ãĥĪ åĢ¤ ãĢĤ 0 L Ġ ä»¥ä¸ĭ ãģª ãĤī ãĤ¿ãĤ¤ ãĥł ãĤ¢ ãĤ¦ ãĥĪ ãģĹãģªãģĦ ãĢĤ ãĥĩ ãĥķãĤ© ãĥ« ãĥĪ åĢ¤ = 0 L Ċ Ġ* Ġ@ param Ġtime Unit Ġ< code > TimeUnit </ code > ĠãĤ ¿ ãĤ¤ ãĥł ãĤ¢ ãĤ¦ ãĥĪ åĢ¤ ãģ® åįĺ ä½į Ċ Ġ* Ġ@ param Ġstd In Executor Ġ éĸ¢æķ° Ġstd In ĠãĤĴ è© ķ ä¾¡ ãģĻãĤĭ Ġ< code > ExecutorService </ code > Ċ Ġ* Ġ@ param Ġstd Out Executor Ġ éĸ¢æķ° Ġstd Out ĠãĤĴ è© ķ ä¾¡ ãģĻãĤĭ Ġ< code > ExecutorService </ code > Ċ Ġ* Ġ@ param Ġstd Err Executor Ġ éĸ¢æķ° Ġstd Err ĠãĤĴ è© ķ ä¾¡ ãģĻãĤĭ Ġ< code > ExecutorService </ code > Ċ Ġ* Ġ@ param Ġstd In Ġ å¼ķ æķ° ãģ¨ãģĹãģ¦ ĠProcess . output Stream ĠãĤĴ æĮģ ãģ¡ ãĢģ æĪ » ãĤĬ åĢ¤ ãģ® ãģªãģĦ éĸ¢æķ° Ċ Ġ* Ġ@ param Ġstd Out Ġ å¼ķ æķ° ãģ¨ãģĹãģ¦ ĠProcess . inputStream ĠãĤĴ æĮģ ãģ¡ ãĢģ æĪ » ãĤĬ åĢ¤ ãģ® ãģªãģĦ éĸ¢æķ° Ċ Ġ* Ġ@ param Ġstd Err Ġ å¼ķ æķ° ãģ¨ãģĹãģ¦ ĠProcess . error Stream ĠãĤĴ æĮģ ãģ¡ ãĢģ æĪ » ãĤĬ åĢ¤ ãģ® ãģªãģĦ éĸ¢æķ° Ċ Ġ* Ġ@ return ĠResult < String > Ġ< code > Process </ code > ĠãģĮ è¿Ķ åį´ ãģĻãĤĭ æĸĩåŃĹåĪĹ Ċ Ġ* Ġ@ author Ġfunc zz Ċ Ġ*/ Ċ fun ĠProcess Builder . capture ( ĊĠĠĠ Ġtimeout : ĠLong Ġ= Ġ 0 L , ĊĠĠĠ Ġtime Unit : ĠTimeUnit Ġ= ĠTimeUnit . MILLISECONDS , ĊĠĠĠ Ġstd In Executor : ĠExecutor Service Ġ= ĠExec utors . new Single Thread Executor (), ĊĠĠĠ Ġstd Out Executor : ĠExecutor Service Ġ= ĠExec utors . new Single Thread Executor (), ĊĠĠĠ Ġstd Err Executor : ĠExecutor Service Ġ= ĠExec utors . new Single Thread Executor (), ĊĠĠĠ Ġstd In : Ġ( OutputStream ) Ġ-> ĠUnit , ĊĠĠĠ Ġstd Out : Ġ( InputStream ) Ġ-> ĠUnit , ĊĠĠĠ Ġstd Err : Ġ( InputStream ) Ġ-> ĠUnit , Ċ ): ĠResult < String > Ġ= Ġtry Ġ{ ĊĠĠĠ Ġthis . start (). capture ( ĊĠĠĠĠĠĠĠ Ġtimeout Ġ= Ġtimeout , ĊĠĠĠĠĠĠĠ Ġtime Unit Ġ= Ġtime Unit , ĊĠĠĠĠĠĠĠ Ġstd In Executor Ġ= Ġstd In Executor , ĊĠĠĠĠĠĠĠ Ġstd Out Executor Ġ= Ġstd Out Executor , ĊĠĠĠĠĠĠĠ Ġstd Err Executor Ġ= Ġstd Err Executor , ĊĠĠĠĠĠĠĠ Ġstd In Ġ= Ġstd In , ĊĠĠĠĠĠĠĠ Ġstd Out Ġ= Ġstd Out , ĊĠĠĠĠĠĠĠ Ġstd Err Ġ= Ġstd Err , ĊĠĠĠ Ġ) Ċ } Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠ ĠResult . failure ( e ) Ċ } Ċ