当前位置 : 主页 > 网页制作 > css >

css – Ruby命令行:如何通过命令行中的文本发送CTRL-C命令?

来源:互联网 收集:自由互联 发布时间:2021-06-13
我正在尝试创建一个简单的Automator Droplet,它将把style.less文件放入其中并在其上运行以下LESS命令: $LESSC {DROPPED_FILE} – 手表 这将监视我已经放入任何更改的文件,然后将自动更新输出的
我正在尝试创建一个简单的Automator Droplet,它将把style.less文件放入其中并在其上运行以下LESS命令:

$LESSC {DROPPED_FILE} – 手表

这将监视我已经放入任何更改的文件,然后将自动更新输出的style.css

仅供参考:我使用LESS来动态编写CSS文件.更多信息是here.

基本的液滴效果很好.

>删除的文件传递给变量;为此目的:{MY_VAR}.
>我在/usr/bin/ruby​​ shell中运行一个shell脚本,如下所示系统(“lessc {MY_VAR} –watch&”)

这很好用但是我希望在退出自动贩卖应用程序时停止–watch.

LESS文档说在命令行shell中按CTRL-C快捷键以中止脚本.

但由于我不在终端窗口内(命令在后台传递),我不知道如何中止脚本.

即使在关闭automator.app之后,仍然会监视style.less文件的更改,并且相应生成的style.css仍在被重写.

所以基本上我需要在退出.app时传递abort命令.

我生成了一个简单的弹出窗口,点击它会在将另一个命令传递给终端shell后关闭应用程序.

这是我所有尝试都不能成功停止脚本的部分.

是否有与按CTRL-C命令相同的命令行功能?
我怎么把这个最好的传递到shell?

如果您在控制台中按CTRL-C,则不会通过STDIN将其发送到您的程序. Bash(或任何你使用的)对待CTRL-C特殊. bash向进程发送信号.在CTRL-C的情况下,这是SIGINT.要向程序发送信号,您需要不要它的pid.然后你可以将信号发送到pid.为了能够获得pid,您可以使用ruby启动该过程.

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

在ruby中,执行某些操作至少有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

您使用了系统(“lessc#{file} –watch&”),它也会返回imidietly但总是返回0.

网友评论