Restored io.unix.launcher to previous state
parent
3e7b4e047c
commit
232ce7d9f4
|
@ -1,36 +1,13 @@
|
||||||
|
|
||||||
USING: io io.launcher io.unix.backend io.nonblocking
|
USING: io io.launcher io.unix.backend io.nonblocking
|
||||||
sequences kernel namespaces math system alien.c-types
|
sequences kernel namespaces math system alien.c-types
|
||||||
debugger continuations combinators.lib threads ;
|
debugger continuations ;
|
||||||
|
|
||||||
IN: io.unix.launcher
|
IN: io.unix.launcher
|
||||||
|
|
||||||
! Search unix first
|
! Search unix first
|
||||||
USE: unix
|
USE: unix
|
||||||
|
|
||||||
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
|
|
||||||
! Factor friendly versions of the exec functions
|
|
||||||
|
|
||||||
: >argv ( seq -- alien ) [ malloc-char-string ] map f add >c-void*-array ;
|
|
||||||
|
|
||||||
: execv* ( pathname argv -- int ) [ malloc-char-string ] [ >argv ] bi* execv ;
|
|
||||||
: execvp* ( filename argv -- int ) [ malloc-char-string ] [ >argv ] bi* execvp ;
|
|
||||||
|
|
||||||
: execve* ( pathname argv envp -- int )
|
|
||||||
[ malloc-char-string ] [ >argv ] [ >argv ] tri* execve ;
|
|
||||||
|
|
||||||
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
|
|
||||||
! Wait for a pid to finish without freezing up all the Factor threads.
|
|
||||||
! Need to find a less kludgy way to do this.
|
|
||||||
|
|
||||||
: wait-for-pid ( pid -- )
|
|
||||||
dup "int" <c-object> WNOHANG waitpid
|
|
||||||
0 = [ 100 sleep wait-for-pid ] [ drop ] if ;
|
|
||||||
|
|
||||||
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
||||||
|
|
||||||
: with-fork ( child parent -- pid )
|
: with-fork ( child parent -- pid )
|
||||||
fork [ zero? -rot if ] keep ; inline
|
fork [ zero? -rot if ] keep ; inline
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue