Detach child process to another virtual terminal
nataraj-hates-MS-for-stealing-github opened this issue · comments
nataraj-hates-MS-for-stealing-github commented
I do want to use reptyr
, so I can fork current process and put it into separate window of tmux terminal. But I still did not find any way how I can do that.
I wrote sample script:
#!/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;
(setsid() != -1) || die "Can't start a new session: $!";
sleep 10;
while (1) {print "$i\n"; sleep 1; $i++};
}
I am trying to reptyr
child to another terminal using pid it prints at the beginning, but I get
[-] Timed out waiting for child stop.
Adding -T
does not help either.
Have you any idea how I can do that?
nataraj-hates-MS-for-stealing-github commented
I tried another approach, and it worked. Instead of putting child into new session, as I've done in the example above, I make it it's own group. And that worked for me:
#!/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++};
}
and then
reptyr [process id printed by the script above]
in another terminal
nataraj-hates-MS-for-stealing-github commented
But problems, I guess. still remains:
- It should be good to be able to detach child without doing any magic with group pid and session pid, just out of box
- Detaching process that is his own session is also valid case, I guess. It whould be better if it worked to.