タグ

posixとUnixに関するakaneharaのブックマーク (10)

  • SIG30-C. シグナルハンドラ内では非同期安全な関数のみを呼び出す

    SIG30-C. シグナルハンドラ内では非同期安全な関数のみを呼び出す シグナルハンドラ内では非同期安全な関数のみを呼び出すこと。厳密に合致するプログラムでは、C 標準ライブラリ関数 abort()、_Exit()、および signal() をシグナルハンドラ内から呼び出すことができる。 C 標準 [ISO/IEC 9899:2011] セクション 7.14.1.1、第 5 段落には、シグナルが abort() または raise() 関数の呼び出し以外によって発生し、次の条件が該当する場合には、動作は未定義になると規定している。 シグナル処理ルーチンが、この規格で規定するライブラリ中の関数を呼び出す場合。ただし、abort 関数、_Exit 関数、又は、シグナル処理ルーチンの呼出しを発生させたシグナルに対応するシグナル番号を第 1実引数として signal 関数自身を呼び出す場合を除く。

    SIG30-C. シグナルハンドラ内では非同期安全な関数のみを呼び出す
  • シェルの展開順序に気をつけよう - Qiita

    Shell Script Advent Calendar 2016の12月17日エントリーです(途中途切れてるので日数計算は不明)。 初級者向けの基礎知識として、シェルの展開順序について書きます。ここではbashを例に説明しますが、基は各種シェルに共通していると思います。 展開と実行の順序 端末やシェルスクリプトなどでシェルを使うときには、展開順序を意識していないと思わぬ失敗をすることがあります。展開(expansion)とは、ファイル名のパターン(ワイルドカード)やシェル変数などの処理です。 展開のメカニズムは普通のプログラミング言語のモデルと大きく異なる点の一つです。たとえば、多くのプログラミング言語の文法では変数は値の一種として扱われますが、シェルの文法では変数が展開されてから実際の処理が実行されます。このあたりの感覚は、C言語のプリプロセッサマクロなどに近いかもしれません。 ba

    シェルの展開順序に気をつけよう - Qiita
  • シェルスクリプト——こんなとき、かうする - Qiita

    POSIX シェルの小ネタ集。随時更新。 POSIX の範囲外の機能に依存するところには 【non-POSIX】 と書いておいた。 ファイル操作 空のファイルを作る touch でもいいがリダイレクトした方が速い。 >> filename # 既存ファイルは上書きしない (ファイルの更新日時も変へない) >| filename # 既存ファイルは空にする > filename # -C が有効なら既存ファイルがあるとエラーになる フィルタ ソートして重複行を消す sort | uniq でもいいが sort -u だと一コマンドで済む。 ソートせずに重複行を消す awk '!x[$0]++' 1 行番号を付加する awk '{print ++i,$0}' 【non-POSIX】 cat -n 一行目だけを消す tail -n +2 sed 1d 最後の行だけを消す head -n -1 s

    シェルスクリプト——こんなとき、かうする - Qiita
  • PIPESTATUSさようなら - Qiita

    Bash使いたくないけどPIPESTATUSどうしよう…… そんなアナタに耳よりな話。POSIXの範囲、つまりどのUNIXシェルでも同等のことができるというお話です。 元ネタはコチラですが、ここで例示されているコードでは、繋ぎたいコマンドが増えるとやがて動かなくなるので修正版を公開します。 1)次のシェル関数を定義 まずは、PIPESTATUSのように、全ての戻り値を集めたいコマンドパイプ列を書こうとしているシェルスクリプトの冒頭に次のシェル関数を追記します。 run() { local a j k l com # ←ここはPOSIX範囲外なんだけど…… j=1 while eval "\${pipestatus_$j+:} false"; do unset pipestatus_$j j=$(($j+1)) done j=1 com= k=1 l= for a; do if [ "x$a

    PIPESTATUSさようなら - Qiita
  • CONTENTS

    The Open Group Base Specifications Issue 7, 2018 edition IEEE Std 1003.1-2017 (Revision of IEEE Std 1003.1-2008) Copyright © 2001-2018 IEEE and The Open Group

  • POSIXコマンドチートシート(を作る) - Qiita

    この記事の説明 POSIX規格で用意されているコマンドとその概要が一覧できるページ(チートシート)が欲しいという要望をもらった。もちろんThe Open GroupのPOSIXのページへ行って、1つ1つのコマンドのページを開けばわかることはわかるのだが、概要という形では一覧できない。 確かにそうだと思ったので、生成することにした。もちろんPOSIX原理主義(極力POSIXの範囲のコマンド)1で。 そこはやっぱ意地でしょ。 というわけで、まずは生成したチートシートをどうぞ。 これが、POSIXの範囲で使えるコマンド一覧だ! admin - create and administer SCCS files (DEVELOPMENT) alias - define or display aliases ar - create and maintain library archives asa -

    POSIXコマンドチートシート(を作る) - Qiita
  • 恐怖!シェルショッカーの POSIX原理主義シェルスクリプト

    シェルスクリプトがいかに最強の言語であるかを、POSIX原理主義集団「シェルショッカー日支部」がとくと教えてやる。 ― 2016/03/20@歌舞伎座.tech#9

    恐怖!シェルショッカーの POSIX原理主義シェルスクリプト
    akanehara
    akanehara 2016/03/22
    「道具を探しまわるな。使いこなせ。」ほんまこれ
  • Super Technique 講座〜シグナルとコールバック

    この文書ではまず、関数ポインタとその型チェックについて述べた後で、UNIXのシグナル機能について解説する。そして、ウィンドウシステムのプログラミングで多用される「コールバック」について解説する。 ちなみにシグナルの機能は質的には UNIX に固有である。他のOSにもないわけではないが、その異同については筆者は関知しない。また、UNIXでのシグナルの実装については Linux を基準に解説をしていく。UNIX シグナルは、実は具体的な実装において大変差がある機能なのだが、一応 POSIX で「こう実装しなさい」という風に決まってはおり、後発の Linux は比較的マジメにそれを実装しているので、まあ、Linux を基準にするのが無難というものであろう(ユーザ比の問題を別にしても)。勿論、伝統的に重要ないわゆる「SysVシグナル」「BSDシグナル」についてもしっかりと解説しているが、もはや「

    akanehara
    akanehara 2016/03/15
  • どのUNIXコマンドでも使える正規表現 - Qiita

    特定コマンドの正規表現で使えるメタ文字が何だかわからない! 正規表現自体は知っているけど、それが今から使おうとしているコマンドで使えるものなのかわからずに困っている人も多いと思うのでまとめてみた。 たった3つの正規表現メタ文字セットだけ知ればいい コマンドによって、対応している正規表現メタ文字の範囲には違いがある。しかし、最低限知っておけばよいのは2種類+1サブセットの3つだけだ。 BRE(基正規表現)メタ文字セット ERE(拡張正規表現)メタ文字セット AWKのサブセット もちろん、これ以外にもGNU拡張正規表現メタ文字セットやPerl拡張正規表現メタ文字セット、JavaScript拡張正規表現メタ文字セットなどいくつかあるのだが、「どのUNIXでも(=POSIXで)使える」という特長を持たせたいのであれば、それらは覚えても意味がないので上記の3つさえおさえておけばよい。(例えPOSI

    どのUNIXコマンドでも使える正規表現 - Qiita
  • POSIX sh準拠のシェルスクリプトを書くときに checkbashisms が便利。 | おそらくはそれさえも平凡な日々

    http://sourceforge.net/projects/checkbaskisms/ 「#!/bin/sh なのにbashでしか動かないシェルスクリプトを書くな!」みたいなことはよく言われるわけですが、僕はゆとりなので正直どうでもええやろとか思ったりもしてました。実際、CentOSだと、/bin/sh は /bin/bash へのリンクだし、OSXでも /bin/sh の実態はbashだしね。 しかしそこで立ちふさがるのがUbuntu。Ubuntuだとデフォルトで /bin/sh は /bin/dash だったりするわけです。dashはPOSIX準拠のsh実装で、bash独自の記述があると見事に動かない。 とはいえ、それで困るのだったら、デフォルトシェルをbashにしたVMテンプレートを作ればいいんじゃないかって思うやろ。僕もそう思う。 しかしそこで立ちふさがるのがTravisで、

    POSIX sh準拠のシェルスクリプトを書くときに checkbashisms が便利。 | おそらくはそれさえも平凡な日々
  • 1