[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
how to kill child process?
From: |
vapnik spaknik |
Subject: |
how to kill child process? |
Date: |
Sun, 23 Aug 2020 19:50:58 +0000 (UTC) |
Hi,
I'm writing a backup script in guile, and want to run rsync several times
over the same ssh connection.
>From the shell command line I can start an ssh session with a control master
>socket, and then tell ssh to reuse that socket with each invocation of rsync:
> ssh -S ~/.ssh/%C -N -f remotehost &
> rsync -au -e "ssh -S ~/.ssh/%C remotehost" remotehost:file1 backupdir/file1
> rsync -au -e "ssh -S ~/.ssh/%C remotehost" remotehost:file2 backupdir/file2
and finally, find the pid and kill the ssh session:
> ps -e|grep ssh
> kill <PID>
To do the same thing in guile I tried the following:
(let ((pid (primitive-fork)))
(if (eq? 0 pid)
(execlp "ssh" "ssh" "-S" "~/.ssh/%C" "-N" "-f" "remotehost")
(begin (system "rsync -au -e \"ssh -S ~/.ssh/%C remotehost\"
remotehost:file1 backupdir/file1")
(system "rsync -au -e \"ssh -S ~/.ssh/%C remotehost\"
remotehost:file1 backupdir/file1")
(kill pid SIGTERM)))
However, this doesn't work because the pid returned by primitive-fork is the
pid of the guile thread, not its child ssh process, and killing the guile
thread doesn't kill its child process.
I don't want to run (system "kill ssh") because I might have other ssh
processes running that I need to keep alive.
It might be possible for me to achieve the same end results using a tunnel with
guile-ssh for this particular problem, but I would like to know how to solve
the more general problem of killing a long-running child process in guile,
since I will probably face this problem again at some point in the future.
Can anyone help me?
Joe Bloggs.
- how to kill child process?,
vapnik spaknik <=
- Re: how to kill child process?, Sebastian Miele, 2020/08/23
- Re: how to kill child process?, Sebastian Miele, 2020/08/24
- Re: how to kill child process?, vapnik spaknik, 2020/08/24
- Re: how to kill child process?, Sebastian Miele, 2020/08/24
- Re: how to kill child process?, Sebastian Miele, 2020/08/24
- Re: how to kill child process?, vapnik spaknik, 2020/08/24
- Re: how to kill child process?, Sebastian Miele, 2020/08/24
- Re: how to kill child process?, vapnik spaknik, 2020/08/25