словах? Нужно в связи с тем, что есть необходимость сделать подобный функционал, не таща за собой весь Qt в уже имеющемся проекте.
Понятно, что по сути это fork+exec+пайпы, но хотелось бы понять некоторые детали.
1. forkfd - это стандартная вещь или какой-то Qt-шный наворот?
2. Почему vfork вместо fork - понятно, но как тогда пайпы остаются жить после вызова execve() в QChildProcess::startProcess()?
3. Что в общих чертах выполняется в форкнутом процессе, чтобы обезопасить родительский процесс от залупы?
Еще не очень опытный в IPC, не все понятно, поэтому извиняюсь, если вопросы глупые.
Вообще qrocess это базовый кьют, и если вы используете в проекте кьют, то qprocess там уже есть. Самому в мультиплатформенном проекте делать все будет довольно сложно, там масса нюансов, в зависимости от системы.
Нет в том проекте qt вообще. Он не мультиплатформенный, только под linux.
На Unix-системах обычно есть glib, в котором есть аналог QProcess: https://docs.gtk.org/glib/func.spawn_sync.html https://docs.gtk.org/glib/func.spawn_async.html https://docs.gtk.org/gio/class.Subprocess.html https://docs.gtk.org/gio/class.SubprocessLauncher.html Использовать fork напрямую - дело не благодарное...
Обсуждают сегодня