Здравствуй дорогой all!
Меня давно мучает один вопрос, и вот видимо пришло время его задать:
А можно ли форкнуть текущий процесс так, чтобы его ввод-вывод начал работать через другой виртуальный терминал? Например через другое окно в tmux’е? Я с одной стороны не вижу концептуальных причин почему так нельзя. А с другой стороны не вижу никаких реальных возможностей этого сделать…
Кто-нибудь знает, возможно ли это вообще в принципе, если да, то как?
Update:
Правильный ответ такой:
#!/usr/bin/perl
use strict;
use POSIX;
my $pid = fork();
if ($pid)
{
print "$pid\n";
sleep 10;
while (1) {print ".\n"; sleep 1};
} else
{
my $i=0;
(setpgid($$,$$) != -1) || die "Can't create own group: $!";
sleep 10;
while (1) {print "$i\n"; sleep 1; $i++};
}
Он напечатает в консоли pid дочернего процесса, и в другой консоли надо дать команду
$ reptyr [это самый pid]
Подробности и полезные ссылки см. в комментариях