AT
Size: a a a
AT
AP
stdout
на другой файловый дескриптор просто.AP
with-output-to-port
, например. Или же просто заменить файловый дескриптор выходного потока через dup2
или может быть redirect-port
на нужный тебе, а потом запустить процесс через system
(предположу, так как system
работает через fork/exec, то он получит дескрипторы от родителя "по наследству".)AP
AT
with-output-to-port
, например. Или же просто заменить файловый дескриптор выходного потока через dup2
или может быть redirect-port
на нужный тебе, а потом запустить процесс через system
(предположу, так как system
работает через fork/exec, то он получит дескрипторы от родителя "по наследству".)(with-output-to-port (current-output-port)
(lambda () (system "ls")))
AT
(let ((port ((@@ (ice-9 popen) open-input-pipe) "ls && sleep 5s")))
(waitpid WAIT_ANY)
(display ((@@ (ice-9 rdelim) read-delimited) "" port))
((@@ (ice-9 popen) close-pipe) port))
AP
AT
AP
(with-output-to-port (current-output-port)
(lambda () (system "ls")))
AT
AP
AT
AP
#!/usr/bin/guile \
-e main -s
!#
(define (main args)
(system "ls"))
$ ./system-to-stdout.scm
system-to-stdout.scm
stdout
процесса, который был запущен system
.AP
#!/usr/bin/guile \
-e main -s
!#
(define (main args)
(let ((port (open-output-file "out.txt")))
(dup2 (port->fdes port) 1)
(system "ls")))
AP
primitive-fork
:#!/usr/bin/guile \
-e main -s
!#
(define (main args)
(let ((port (open-output-file "out.txt")))
(dup2 (port->fdes port) 1)
(let ((pid (primitive-fork)))
(cond
((zero? pid)
(execl "/usr/bin/ls" "ls"))))))
AT
#!/usr/bin/guile \
-e main -s
!#
(define (main args)
(system "ls"))
$ ./system-to-stdout.scm
system-to-stdout.scm
stdout
процесса, который был запущен system
.1
1
(define (nod x y)
(if (or ( = x 0)(= y 0))
(max x y)
(let
([mx (max x y)]
[mn (min x y)])
(nod (remainder mx mn) mn))))