前回までの続き。なるほどUnixプロセス ―Rubyで学ぶUnixの基礎 - 達人出版会をまだ読んでいる。遅読。 Unixプロセスとリソースの基礎を再確認した - えいのうにっき プロセスとの情報のやりとりについて再確認した - えいのうにっき プロセスの適切な扱い方を再確認した - えいのうにっき 今回は、Unixプロセスとシグナルの基礎について再確認していく。 Unixシグナル・事始め Unixシグナルの「いろは」 シグナルを再定義する シグナルハンドリングの注意点 Unixシグナル・事始め 前回、子プロセスの終了を待ち受けるのに用いた Process.wait は、実行するとそこで自身(親プロセス)の処理を止めて子プロセスの終了を待った。これは ブロッキング呼び出し と呼ばれる。 では「親は親で何か別の仕事をしたいとき」はどうするかというと、これから見ていくシグナルを上手に使うと実

続きを書きました。 少し前にakrさんからもらったパッチで知った Shellwords というモジュールが便利だったので紹介します。Rubyスクリプトからシェルにコマンドを投げ込むときに必要なことを代わりにやってくれるいいやつです。 module Shellwords (Ruby 2.2.0) インストール 標準添付なのでrequireすればすぐに使えます。 require 'shellwords' 問題 コマンドから引数を受け取ってlsするスクリプトを考えてみます。 require 'shellwords' system("ls #{ARGV[0]}") だいたいのケースはこれでいいのですが、引数に空白入りのファイルが渡されたときなどに問題が起きます。 $ruby ls.rb "foo bar.txt" # foo\ bar.txt でも同様 ls: bar.txt: No such
「#!」[1]や「ハッシュバン」はこの項目へ転送されています。URLに使われるものについては「URIフラグメント#hash-bang(英語版)」をご覧ください。 シバンまたはシェバン (英: shebang) とはスクリプトの#!から始まる1行目のこと。起動してスクリプトを読み込むインタプリタを指定する。 シェバンやシバンと呼ばれるようになった理由については諸説あるが、一般的には、そこに書かれる2文字が「#」(ハッシュ、番号記号)と「!」(bang! バン (びっくりマーク)だから、ハッシュ・バン(hashbang)やシャープ・バン(sharpbang)と呼ばれるようになり、それを短く言う際に訛ってシェバンとなった、と説明されている。あるいは、もはもともとは主にシェルを起動していたからシェル・バン(shellbang)と呼ばれ、それが訛ったと説明されることもある。いずれにせよ現在では
Ruby でシェルのようなものを作ってみると、Ruby とシェルやシステムコールの理解ができて、研修の課題とかにいいんじゃないかと10年くらい前に思ってたのを、ふと思い出したので書いてみます。 基本 シェルの動作を簡単に説明すると次のような感じです。 プロンプトを出力 標準入力からコマンドラインを読み込む 読み込んだコマンドを実行する コマンドの終了を待つ 1 に戻る これをそのままRuby で書いてみます。 while true print '-> ' # プロンプト表示 cmd = gets orbreak # コマンド入力 cmd.chomp! # 末尾の改行削除 pid = Process.fork do # 子プロセス生成 Process.exec [cmd, cmd] # コマンド実行 end Process.waitall # 子プロセスの終了待ち end Process

Kodama's home 適宜, 加筆/修正しています. PowerShell, LaTeX/latex2html,Ruby, プログラミング,Linux での調べ方,Linux/UNIX, いろいろごっちゃ, このページの利用について 最近の文書 PowerShell の概要 PowerShell の文法CSV の PowerShell への読み込み メールサーバ管理/サイト管理の調査 .forward で簡易着信通知 LaTeX で増減表に用いる曲った矢印 "the quick brown fox..." って何よ? 文字の出現頻度を調べる. LaTeX 文書の編集にemacs のアウトライン モード を使う LaTeX で作成するPDF のフォント埋め込み LaTeX \section などで箇条書きのように字下げする方法Linux ディスクキャッシュの開放 Linu
1リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く