Why not login to Qiita and try out its useful features?

We'll deliver articles that match you.

You can read useful information later.

55
52

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

UNIXドメインソケットを試す

Last updated at Posted at 2014-04-19

c04f1b7fd932ac123a30c2c95e55f5b6.gif

UNIXドメインソケットは、異なるプロセス間で情報のやり取りを行う方法のひとつ。あるプログラムでファイルのようにして .sockファイル UNIXドメインソケットをどこかに置いておき、もう一方のプログラムでそのファイルに向けて接続すれば、やりとりが行える。試しに使ってみた。

サーバのコード。

server.rb
require 'socket'

time = 0

count = Thread.new do
  loop do
    time += 1
    Thread.pass
    sleep 1
  end
end

sock = Thread.new do
  Socket.unix_server_loop('server.sock') do |sock, addr|
    p sock
    Thread.new do
      loop do
        begin
          sock.write(time.to_s + "\n")
        rescue Errno::EPIPE => e
          p e
          break
        end
        Thread.pass
        sleep 0.2
      end
    end
  end
end

puts 'server launched!'

count.join

クライアントのコード。

client.rb
require 'socket'
require 'logger'

log = Logger.new(STDOUT) # 時刻をサクッと知りたかったのでLogger使った

UNIXSocket.open('server.sock') do |sock| # .sockファイルに対してopenする
  while true
    log.info sock.readline.chomp!
  end
end

こうすると、トップに貼ったgifのような感じで情報が取れる

55
52
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Qiita Conference 2025 will be held!: 4/23(wed) - 4/25(Fri)

Qiita Conference is the largest tech conference in Qiita!

Keynote Speaker

ymrl、Masanobu Naruse, Takeshi Kano, Junichi Ito, uhyo, Hiroshi Tokumaru, MinoDriven, Minorun, Hiroyuki Sakuraba, tenntenn, drken, konifar

View event details
55
52

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?