小编Kyr*_*ren的帖子

将进程的生命周期与启动它的shell联系起来

以UNIX-y的方式,我正在尝试启动一个进程,对其进行后台处理,并将该进程的生命周期与我的shell联系起来.

我说的是不是简单地backgrounding的过程中,我想的过程要发送SIGTERM,或者它有一个开放的文件描述符被关闭,或者什么时候shell退出,从而使外壳的用户不必显式杀死进程或获得"你有正在运行的作业"警告.

最终,我想要一个程序,可以为每个shell运行唯一的,并且与shell一起携带状态,并在shell关闭时关闭.

IBM的DB2控制台命令以这种方式工作.当您连接到数据库时,它会生成一个"db2bp"进程,该进程包含数据库状态和连接并将其绑定到您的shell.您可以连接多个不同的终端或ssh连接,每个都有自己的db2bp进程,当这些进程关闭时,相应的db2bp进程将终止,并且该连接将关闭.

然后使用db2命令启动DB2查询,该命令只是将其移交给相应的db2bp进程.我不知道它是如何与正确的 db2bp进程通信的,但是它可能使用连接到stdin的tty设备作为唯一密钥?我想我也需要弄明白.

我从来没有写任何有关操作的东西,所以我不知道哪里可以开始.如果我可以生成一个在shell退出时自动终止的进程,我想我可以解决剩下的问题.任何人都知道DB2是如何做到的?

unix db2 shell terminal process

8
推荐指数
1
解决办法
1414
查看次数

在运行'stack build'与'stack build --profile'之间存储什么状态或类似地改变ghc选项?

如果我运行stack clean && stack build --profile,我得到的可执行文件比运行时慢stack clean && stack build,这很正常.

如果我运行stack clean && stack build --profile && stack build然后我得到一个同样慢的可执行文件,这一直持续到我运行stack clean && stack build

我已经rebuild-ghc-options: true在stack.yaml中设置了选项,但我要么不理解堆栈的正确使用,要么我以某种方式滥用它,因为我没有一个明确的心理模型,说明当我运行时状态会受到什么影响stack build.在我运行之前stack clean,它显然正在影响未来的构建,它是否也会影响依赖性?我如何确保在使用默认设置构建时,每次都获得相同的可执行文件?

编辑:让我说清楚,我理解机械上发生了什么,我明白stack build只重建"需要重建"的东西,如果我运行stack build想要的东西就是重建所有需要进行发布构建的东西如果我刚刚使用性能分析构建,这意味着重建所有内容,那就这样吧.

编辑2:好的,我知道堆栈不知道发布或分析构建等,没有根本的区别,但是--profile只是改变了ghc标志吗?我想我要问的是,为什么不做rebuild-ghc-options锡上的说法呢?如果ghc选项发生变化,为什么不完全重建项目呢?那个国旗实际上做了什么?

haskell haskell-stack

8
推荐指数
0
解决办法
119
查看次数

标签 统计

db2 ×1

haskell ×1

haskell-stack ×1

process ×1

shell ×1

terminal ×1

unix ×1