Plantuml source file (for later edit)
// Style

skinparam backgroundColor #FFFFFF

skinparam sequence {
    ActorBorderColor DeepSkyBlue
    ArrowColor #4a6484
    
    LifeLineBorderColor #4a6484
    ParticipantBackgroundColor  #91c6ff
    ParticipantBorderColor black
    BoxBorderColor black
}


//posix no error
/**
\plantuml
activate Father 

box "Child Process" #LightGrey
    participant Child
    participant Exe
end box

Father->Father : on_setup
activate Father
deactivate Father
Father->Child : fork
activate Child 
Father -> Father : wait for error
deactivate Father


Child->Child : on_exec_setup
activate Child
deactivate Child
Child->Exe : execve
deactivate Child
activate Father
activate Exe 

Father -> Father : on_success 
activate Father
deactivate Father

\endplantuml */

//posix exec error
/**
\plantuml
activate Father 

Father->Father : on_setup
activate Father
deactivate Father
Father->Child : fork
activate Child 
Father -> Father : wait for error
deactivate Father

Child->Child : on_exec_setup
activate Child
deactivate Child
Child->Child : execve
Child->Child : on_exec_error
activate Child
deactivate Child
Child->Father : report
deactivate Child
activate Father 
Father -> Father : on_error
activate Father
deactivate Father
\endplantuml 

//posix fork error
\plantuml
activate Father 

Father->Father : on_setup
activate Father
deactivate Father
Father->Father : fork
Father -> Father : on_fork_error
activate Father
deactivate Father
Father -> Father : on_error
activate Father
deactivate Father
\endplantuml


//windows.
\plantuml
activate Father 

Father->Father : on_setup
activate Father
deactivate Father
Father->Child : CreateProcess
activate Child

alt Successful Launch

Father -> Father : on_success
activate Father
deactivate Father

else Error during launch

Father -> Father : on_error
activate Father
deactivate Father

end
\endplantuml
