package Ġdata maint ain . core . util Ċ Ċ import Ġdata maint ain . core . exception . Data maint ain Process Exception Ċ import Ġjava . io . File Ċ import Ġjava . io . IOException Ċ import Ġjava . io . InputStream Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ fun ĠList < String >. run Process ( ĊĠĠĠĠĠĠĠ Ġworking Dir : ĠFile Ġ= ĠFile (". "), ĊĠĠĠĠĠĠĠ Ġtimeout Value : ĠLong Ġ= Ġ 6 0 , ĊĠĠĠĠĠĠĠ Ġtimeout Unit : ĠTimeUnit Ġ= ĠTimeUnit . MIN UTES , ĊĠĠĠĠĠĠĠ Ġoutput Read Function : Ġ(( InputStream ) Ġ-> ĠUnit )? Ġ= Ġnull Ċ ): ĠInt Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproc Ġ= ĠProcess Builder (* this . to Typed Array ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. directory ( working Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. redirect Output ( Process Builder . Redirect . PIPE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. redirect Error ( Process Builder . Redirect . PIPE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. start () ĊĠĠĠĠĠĠĠ Ġif Ġ( output Read Function Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Read Function ( proc . inputStream ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġproc . waitFor ( timeout Value , Ġtimeout Unit ) ĊĠĠĠĠĠĠĠ Ġreturn Ġ Ġproc . exit Value () ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠData maint ain Process Exception ( this , Ġe . message Ġ?: Ġ"") ĊĠĠĠ Ġ} Ċ } Ċ