メモの日々


2004年01月21日(水) [長年日記]

[unix] ipcclean

Linuxに存在していたipccleanスクリプトをNetBSDへコピーしてみた。問題なく動くようだ。

[c] <sys/queue.h>

sys/queue.h にある LIST を使ってみたので忘れないようソースをメモ。

#include <stdio.h>
#include <sys/queue.h>

/* LISTに含める要素の型 */
struct list_element {
    LIST_ENTRY(list_element) connector; /* LISTの前後の要素の情報を
                                           格納するフィールド */
    int value;
};

/* list_elementを要素に持つLISTを表す構造体my_listの宣言 */
LIST_HEAD(my_list, list_element);

void print_list(struct my_list *list_head);

int main()
{
    struct my_list list_head;
    struct list_element a, b, c;

    a.value = 1;
    b.value = 2;
    c.value = 3;

    LIST_INIT(&list_head);
    LIST_INSERT_HEAD(&list_head, &a, connector);
    LIST_INSERT_AFTER(&a, &b, connector);
    LIST_INSERT_AFTER(&b, &c, connector);

    print_list(&list_head);

    LIST_REMOVE(&b, connector);

    print_list(&list_head);
}

void print_list(struct my_list *list_head)
{
    struct list_element *p;

    p = LIST_FIRST(list_head);

    while (p != NULL) {
        printf("%d -> ", p->value);
        p = LIST_NEXT(p, connector);
    }
    printf("\n");
}

出力結果:

1 -> 2 -> 3 ->
1 -> 3 ->

LIST は末尾への要素追加が簡単にはできないので、FIFO を使いたいときは TAILQ を使うようだ。

(追記)

参考:http://vimrc.hp.infoseek.co.jp/diary/2002-08.html#2002-08-28-2 (vimrc diary)

[c] <sys/time.h>

sys/time.h には timerclear, timerisset, timercmp, timeradd, timersub というマクロが定義されている。

生活

  • 朝一番の作業はDeleteキー連打によるspamの削除。
  • 家から職場の自分宛に出しておいたメイルをspamと間違え削除してしまった。ゴミ箱に残っていたからいいんだけど。間違えないようにsubjectには日本語を含めた方がよい。
  • 「鍋が熱いので気をつけてください」という台詞を鍋触りながら言う店員。特殊な訓練を受けているのか。
  • タイマーのプログラムやっとこさ作った。が、テストファーストではないのでまだテストできていない。どのようにテストしたものか。
  • 今日の行数:2476

やること

  • 靴紐を買う