@pahesuj

Как запустить внешнюю программу?

Здравствуйте.
Как мне запустить дочернюю программу, например на java "java -jar p.jar", и получать event'ами output, и возможно вводить свои данные input, чтобы они передавались прямо на дочерний процесс.
Как такое реализовать? Можно пример с event'ами?

Работал с node, там такое реализовывалось с помощью child_process.spawn, мой пример на node:
const 
	{ spawn } = require('child_process'),
	readline = require('readline'),
	rl = readline.createInterface({
	  input: process.stdin,
	  output: process.stdout
	}),
	log = (str) => {
		process.stdout.write(`LOG: ${str}`)
	}
	srv = spawn('sms.bat', { stdio: [null, null, process.stderr] });

rl.on('line', (input) => {
	srv.stdin.write(`${input}\n`);
	log(input);
});

srv.stdout.on('data', (data) => log(data.toString()));

srv.on('close', () => process.exit());

В py нашел subprocess, но как сделать с event'ами, так и не понял.

Спасибо.
  • Вопрос задан
  • 100 просмотров
Пригласить эксперта
Ответы на вопрос 1
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Я же вам ответил! Берите asyncio. И не дублируйте вопросы. И в питоне нет эвентов в понимании nodejs. Но есть async await. Пока не разберетесь с асинхронным программированием в питоне и асинхронными библиотеками, то смысла что-то подсказывать не будет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы