【问题标题】:Unable to properly disown AppImage无法正确拒绝 AppImage
【发布时间】:2021-06-08 21:39:20
【问题描述】:

今晚一直在修修补补,但找不到解决方案。

我编写了一个小脚本,我用“popup-shell”调用它并使用fzf 来选择一个文件。我将此文件传递给marktext appimage 并取消该进程,然后“弹出外壳”关闭。不幸的是,在 shell 关闭时,marktext 应用程序也会关闭。

我认为问题在于可执行文件被正确地拒绝,但 appimage mount-stuff 仍然是“popup-shell”的子处理。一旦“popup-shell”关闭,appimage mount-stuff 也会关闭,这反过来会导致 marktext 关闭。

流程树式:

popup-shell
  +- script that spawns marktext appimage
  |  +- /tmp/.mount_markXXXXX/marktext ...
  |  |  +- /tmp/.mount_markXXXXX/marktext ...
  |  |     +- /tmp/.mount_markXXXXX/marktext ...
  |  |        +- /tmp/.mount_markXXXXX/marktext ...
  |  +- /tmp/.mount_markXXXXX/marktext ...
  |  |  +- /tmp/.mount_markXXXXX/marktext ...
  |  +- /tmp/.mount_markXXXXX/marktext ...
  |  +- /tmp/.mount_markXXXXX/marktext ...
marktext ...

实际的 marktext 二进制文件似乎已被适当地否认。

脚本并不复杂,直接运行即可:

marktext <file> &
disown -h %1

任何指针将不胜感激。

【问题讨论】:

    标签: bash appimage


    【解决方案1】:

    你可以使用

    setsid -f marktext <file>
    

    在新会话中运行程序。

    -f 选项将告诉setsid 立即分叉到后台。快速测试显示disown 仍将保留父进程,而setsid 不会

    sleep 100 &
    disown -h %1
    ps -C sleep -oppid,pid
    

    输出

    PPID     PID
    32772   32806
    

    setsid -f sleep 100
    ps -C sleep -oppid,pid
    

    输出

    PPID     PID
    1       32814
    

    Some further reading

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-12
      • 2018-12-14
      • 1970-01-01
      相关资源
      最近更新 更多