我试图建立一个简单的自动化器滴会采取的 style.less 文件丢弃到它和运行下面的小命令:

$ LESSC {DROPPED_FILE} --watch

它将监测该文件我已经放弃了在对任何更改,并随后将会自动更新的输出 style.css

供参考:我使用的不到有动态写CSS文件。更多信息 在这里,.

基本的液滴的伟大工程。

  1. 删除的文件是通过成为一个变量;为此目的: {MY_VAR}.
  2. 我运行一个壳中的脚本 /usr/bin/ruby 壳如下 system("lessc {MY_VAR} --watch &")

这个伟大的作品但是我想要的-看须停止在戒烟的自动化器应用程序。

少文件说,按CTRL-C快捷,同时在命令行壳中止该脚本。

但因为我不是终端内部窗口(命令正在通过在该背景)我不知道中止该脚本。

甚至后自动化器.程序已经关闭了 style.less 文件仍然是正在看着的变化及相应产生 style.css 还是正在改写。

所以基本上我需要通过中止命令对退出的.应用程序。

我已经产生一个简单的弹,击将关闭程序 通过另一个命令为终端的外壳。

这是我所有的尝试已经失败为止。

是有一个命令的功能作一样按CTRL-C命令?我将如何通过这个的最好的外壳?

有帮助吗?

解决方案

如果你按CTRL-C在你的控制台,这是不能发送的通过标准输入到你的节目.庆典(或什么使用)将按CTRL-C特别的。Bash发送一个信号的程序。在情况下的CTRL-C这是信号情报.发送一个信号,以一个程序需要有它的pid。然后你可以发送的信号pid。能够获得pid你可以开始处理与红宝石。

p= IO.popen("lessc #{file} --watch")
pid= p.pid
Process.kill("INT", pid)

在红宝石至少有3个不同的方式,执行一些东西。

`lessc #{file} --watch` # returns stdout after exit
system("lessc #{file} --watch") # returns the integer return value after exit
Io.popen("lessc #{file} --watch") # returns imidietly an io object, where STDIN and STDOUT can be written and read

你使用 system("lessc #{file} --watch&") 这也返回imidietly但总是返回0。

其他提示

提示:什么^C 控制-C 真的 做一个外壳?

(它不会发送一个字符)。

澄清在提示:PDF谈到信号.注意到它还谈^C。你可以手动发送信号的要求。

当你按下^C在一个终端的通常发送的信号情报信号的程序正在运行。你可以送这些信号的红宝石。更多的信息有关的工作流程(和发送信号)在红宝石: http://whynotwiki.com/Ruby_/_Process_management.

快乐的编码。

不太也终止时,收到"q"性质,我想。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top