On 13/12/2021 22:01, Jacob Hrbek wrote: > I wrote this potato-make <https://github.com/spk121/potato-make> definition > (was simplified): > > #:SRC_BEGIN sheme-mode > #!/usr/bin/env sh > exec guile -s "$0" "$@" > !# > > (use-modules (ice-9 futures) > (potato make)) > (initialize) > > (: "watch" '() > (~ (do ((i 1 (1+ i))) > ((> i 6)) > (future (system > "emacs")) > ;;(let ((emacs_pid (getpid))) > ;; (kill emacs_pid SIGTERM))))) > > (execute) > #:SRC_END > > expecting to capture emacs's pid and kill it, but the issue is that using > `getpid` gets me the PID of potato-make and `getppid` of the shell -> How can > i capture just the emacs's pid? > > FWIW the projected end-goal is 3600 loop that checks if the `my-theme.el` > file has been changed to re-launch emacs with the theme loaded used for theme > development. >
Hello, I hope this day finds you well. While Guile does not directly provide a function to get the PID of an arbitrary process, we could use pgrep to find what we need. #+begin_src scheme (use-modules (ice-9 popen) (ice-9 textual-ports)) (map string->number (string-split (let ((port (open-input-pipe "pgrep emacs")) (s (get-string-all port))) (close-pipe port) s) #\newline)) ;; => (1220 #f) #+end_src I hope this helps! Vale, -Tim
OpenPGP_signature
Description: OpenPGP digital signature