UNIX shells vary, but most send a SIGHUP to the child when the process ends. There are several ways of getting your child process to ignore SIGHUP. A shell type method is to use the nohup(1) program,:
system("nohup kedit &"); #or `kedit &`
another is to set
$SIG{HUP} = 'IGNORE';
in your perl before the
system command.
However there might be a simpler way. You can supress this default action in bash using
shopt -u huponexit
Tested using CentOS 5.2, Perl 5.12.0, bash 3.2.25(1) (where the default for huponexit is off), KEdit 1.3.