Я хотел бы запустить n подпроцессов из Dr Racket или из командной строки (то есть я хотел бы запустить код либо полностью в стиле Dr Racket, либо целиком из командной строки).Запуск подпроцессов в ракетке
Эти процессы затем будут обмениваться сообщениями через stdin и stdout.
Возможно ли это, изменив следующий код, который запускает их из строки cmd? (Или это вообще возможно? Обратите внимание, что я новичок схема)
(struct proc (stdout stdin))
(define (start-program p)
(define-values (s stdout stdin stderr) (subprocess #f #f #f p))
(thread (lambda() (copy-port stderr (current-error-port))))
(proc stdout stdin))
(define programs (vector->list (current-command-line-arguments)))
(map start-program programs)
(define (send-to proc v)
(write v (proc-stdin proc))
(flush-output (proc-stdin proc)))
(define (receive-from proc)
(read (proc-stdout proc)))
Хотя я интуитивно понятен, я сомневаюсь, что все работает так: p (если это действительно так, WOW!) Изменить: скажите, что ваш продюсер работал, где ваш потребительский код? – leppie
Да, это работает из командной строки (я ее протестировал). Очень аккуратно. – user35202
Я добавил код для чтения и записи в подпроцесс – user35202