INFO:我是一名 Emacs 用户,曾使用 react-native 开发移动应用程序。
描述
最近在尝试开发一个flutter app,卡住了hot-reload
部分,希望flutter能在我修改的时候自动重新加载lib/*dart
。
我正在考虑的是观察lib/*dart
' 的修改,当它发生时,将 ar
自动传递给颤振过程。
我怎样才能达到这个flutter run
过程?
解决方案
Emacs 解决方案
在一遍又一遍地阅读Hot reload on save之后,我更新了 Emacs 的配置文件:
(require 'dart-mode)
(defun auto-reload ()
(shell-command "kill -s SIGUSR1 $(cat /tmp/flutter.pid) && echo 'reload flutter...'"))
(add-hook 'dart-mode-hook
(lambda ()
(add-hook 'after-save-hook 'auto-reload nil 'make-it-local)))
这很简单,我简直不敢相信……杀死flutter run
进程,它会在通过我们的 shell 脚本kill -SIGUSR1
向进程发送信号后自动重新加载。flutter run
谢谢@pskink,我已经把我的大脑再试了一次,然后,问题已经解决了。
我再次检查了描述,命令描述为:linux signal
kill
向指定进程、指定进程组的所有成员或系统上的所有进程发送信号。
不仅仅是粗鲁地杀死进程......这是kill
命令行中的描述:
kill [-s sigspec | -n signum | -sigspec] pid | jobspec
...or
kill -l [sigspec]
然而,flutter--pid-file
的flag是这样描述的:
指定要写入进程 ID 的文件。您可以发送 SIGUSR1 来触发热重载,发送 SIGUSR2 来触发热重启。
我们kill -SIGUSR1 $(cat /tmp/flutter.pid)
,当我们向 发送信号SIGURS1
时flutter process
,就发生了这样的事情。
我仍然想知道,我们是否可以将一个发送r
到流程的“屏幕” flutter run
?