This is part of the Fake.Core.Process module.

Proc

Module to start or run processes, used in combination with the CreateProcess API.

Example

1: 
2: 
3: 
4: 
5: 
6: 
#r "paket: 
nuget Fake.Core.Process //"
open Fake.Core
CreateProcess.fromRawCommand "./folder/mytool.exe" ["arg1"; "arg2"]
|> Proc.run
|> ignore
namespace Fake
namespace Fake.Core
Multiple items
module CreateProcess

from Fake.Core.CreateProcessExt

--------------------
module CreateProcess

from Fake.Core

--------------------
module CreateProcess

from Fake.Core.CreateProcessDotNetExt

--------------------
type CreateProcess<'TRes> =
  private { InternalCommand: Command
            TraceCommand: bool
            InternalWorkingDirectory: string option
            InternalEnvironment: EnvMap option
            Streams: StreamSpecs
            Hook: IProcessHook<'TRes> }
    member Command : Command
    member CommandLine : string
    member Environment : EnvMap option
    member WorkingDirectory : string option
val fromRawCommand : command:FilePath -> args:seq<string> -> CreateProcess<ProcessResult<unit>>
module Proc

from Fake.Core
val run : c:CreateProcess<'a> -> 'a
val ignore : value:'T -> unit

Functions and values

Function or valueDescription
Proc.run(c)
Signature: c:CreateProcess<'?8559> -> '?8559
Type parameters: '?8559

Like start but waits for the result synchronously.

Proc.start(c)
Signature: c:CreateProcess<'?8555> -> Task<'?8555>
Type parameters: '?8555

Starts the given process and waits for the Result task. (see startRaw documentation). In most common scenarios the Result includes the Raw task or the exit-code one way or another.

Proc.startAndAwait(c)
Signature: c:CreateProcess<'?8557> -> Async<'?8557>
Type parameters: '?8557

Convenience method when you immediatly want to await the result of 'start', just note that when used incorrectly this might lead to race conditions (ie if you use StartAsTask and access reference cells in CreateProcess after that returns)

Proc.startRaw(c)
Signature: c:CreateProcess<'?8551> -> Task<AsyncProcessResult<'?8551>>
Type parameters: '?8551

Starts a process. The process has been started successfully after the returned task has been completed. After the task has been completed you retrieve two other tasks: - One Raw-Task to indicate when the process exited (and return the exit-code for example) - One Result-Task for the final result object.

Note: The Result task might finish while the Raw task is still running, this enables you to work with the result object before the process has exited. For example consider a long running process where you are only interested in the first couple of output lines

Proc.startRawSync(c)
Signature: c:CreateProcess<'?8553> -> AsyncProcessResult<'?8553>
Type parameters: '?8553

Similar to startRaw but waits until the process has been started.