この記事は何
shellgei160を通じて言語習得 Advent Calendar 2023に参加しています。
書籍「シェル芸ワンライナー160本ノック」の例題をRubyで解いてみて、Rubyの学習に役立てようとするものです。
例題はこちらのリポジトリで公開されているものに限ります。
https://github.com/shellgei/shellgei160
実行環境など
- Docker image: ruby:3.0.2
- 上記リポジトリをクローンした上で、リポジトリのルートディレクトリ直下に
answer-ruby
ディレクトリを作り、その中に解答となるファイルを作成していきます。
今回のテーマ
$ kill -s SIGCONT 5249
一時停止してあるプロセス(この例だとpid=5249)を再開する処理ですね。
解
さて、まず一時停止中のプロセスを用意しないことには始まりません。
sleep 1000 &
# [1] 5583
このプロセスを一時停止しておきます。
kill -STOP 5583
ps aux | grep sleep
# root 5583 (略) T (略) sleep 1000
よし、ちゃんと止まっていますね。ではこれをRubyプログラムから再開します。
pid = 5583
Process.kill(:CONT, pid)
所感
-
kill
コマンドと使用感が近いので分かりやすいですね。