微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法正确拒绝 AppImage

如何解决无法正确拒绝 AppImage

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

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

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

进程树-ish:

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

任何指针将不胜感激。

解决方法

你可以使用

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?