24 lines
565 B
Scheme
24 lines
565 B
Scheme
|
|
;;; ($pcb-set! posix-fork
|
|
;;; (lambda ()
|
|
;;; (foreign-call "S_fork")))
|
|
;;;
|
|
;;; ($pcb-set! fork
|
|
;;; (lambda (parent-proc child-proc)
|
|
;;; (let ([pid (posix-fork)])
|
|
;;; (cond
|
|
;;; [(fx= pid 0) (child-proc)]
|
|
;;; [(fx= pid -1)
|
|
;;; (error 'fork "failed")]
|
|
;;; [else (parent-proc pid)]))))
|
|
|
|
(primitive-set! 'system
|
|
(lambda (x)
|
|
(unless (string? x)
|
|
(error 'system "~s is not a string" x))
|
|
(let ([rv (foreign-call "ik_system" x)])
|
|
(if (fx= rv -1)
|
|
(error 'system "failed")
|
|
rv))))
|
|
|