Ruby 处理守护进程的输入和输出
我想在Linux上创建一个ruby程序的守护进程 我还希望守护进程是交互式的——我希望能够通过文件/管道/最简单的方法向守护进程发送输入,并接收到文件的输出 我该怎么做呢 我已经研究了模块守护进程(http://daemons.rubyforge.org/),线程和方法popen3,但我很难让它们完成上述任务 答复: 姆拉登方法: 我有一个创建守护进程的控制器:(您需要守护进程模块gem) 这里是myDaemon.rb:Ruby 处理守护进程的输入和输出,ruby,linux,daemons,Ruby,Linux,Daemons,我想在Linux上创建一个ruby程序的守护进程 我还希望守护进程是交互式的——我希望能够通过文件/管道/最简单的方法向守护进程发送输入,并接收到文件的输出 我该怎么做呢 我已经研究了模块守护进程(http://daemons.rubyforge.org/),线程和方法popen3,但我很难让它们完成上述任务 答复: 姆拉登方法: 我有一个创建守护进程的控制器:(您需要守护进程模块gem) 这里是myDaemon.rb: puts `pwd` File.open('my_pipe', 'r+'
puts `pwd`
File.open('my_pipe', 'r+') do |f|
loop do
line = f.gets
puts "Got: #{line}"
end
end
步骤:
这两个文件都在我的根目录\。
Daemons.run在\中创建守护进程
socket.Unix\u server\u loop
)。如果它还需要与运行它的主机之外的进程通信,那么您需要打开一个internet套接字(请参阅socket.tcp\u server\u loop
)
服务器的常规配方为:
- 打开插座
- 绑定到主机的ip地址和选定端口(tcp),或绑定到系统上的路径(unix)
- 等待(选择)某个连接
- 接受连接
- 进入读/写通信循环
- 打开插座
- 连接到服务器的地址/端口,或连接到服务器正在使用的Unix域套接字的路径
- 连接后,进入写/读通信循环
您的服务器和客户端需要就谁先发送什么以及另一方的相应响应达成一致。可能是最简单的方法,命名管道,基于: 步骤1:创建命名管道
mkfifo ./my_pipe
步骤2:创建“守护进程”:
然后运行它
步骤3:打开另一个终端并运行
cat > my_pipe
然后开始一行一行地输入一些文本
步骤4:观察守护进程的输出
第五步:
第六步:利润。非常感谢!我花了好几天的时间想弄明白!
File.open('my_pipe', 'r+') do |f|
loop do
line = f.gets
puts "Got: #{line}"
end
end
cat > my_pipe