パスワードを忘れた? アカウント作成

bravo (1225) の日記

○ ◎ ●

ロック機構があやしい

bravo による 2001年11月15日 11時44分 の日記 (#27631)

板に使っているコードで、ロック機構とおもわしきところで、flock(2)は使ってないけど、symlink(2)を使ってる。へんなの。それより、sleep2秒待ちを10回ループという謎のコードが。

    for(i=0;i<10;i++)
    {
        retcode=symlink(lock,link); 
        if(retcode==0) break; 
        sleep(2);
    }

まあ、板に書き込み無いけど(わら

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • #よそ様の日記にオジャマするなテスト
     
    いわゆるロックファイルを作るためであれば、
    (1) ファイルの存在のテスト
    (2) ファイルの作成
    の二つが、一つのシステムコールでできないんといかんのじゃなかったかと。
     
    #モノリシックじゃないカーネルだとどうなるんでしょ?>識者様
     
    だから、「flockかけて失敗したら作成」ではブッブーなのです。真っ当な方法の一つがsymlinkで、もう一つはO_CREAT|O_EXCLを指定したcreatだったかと。
     
    #ところで、失敗し続けてループ抜けた処理は入ってるんでせうか?
    • わー、はじめてのお客さんだ~(謎)

      っていうか、ネタになってるやつは大昔(でも2年前)丸投げされたコードで、このコードはヘッダファイルに書かれていたんだな。すげえな。リンク(gcc -o obj1 obj2とか)という概念がないらしいね。

      さて、このばあいは、新規にファイルは作ってはいけないです。っていうかディレクトリは書き込みできんので、既存のファイルを開いてロックします。

      べつにカーネルがああだこうだは関係ないです(わら

      インターバルの長いろっく待ちをしてますが、ループを抜けたら結局強制で処理が進みます。対処なんてありませんよ。捨てコードだろうし。やれ2

      親コメント
      • #あんまりオジャマしちゃと思いつつ、自分のが間違えてたんで、もういっチョ。
         
        >>「flockかけて失敗したら作成」ではブッブーなのです。
         
        これは失敗霊にしろ順序逆。だけじゃなんなので、、、
         
        >リンクという概念ないらしいね。
         
        まだ、いるようですねぇ。
        「Windowsだと検索が面倒なんで、いただいたソース1ファイルにまとめちゃいました。やぁー。スタティックな変数の名前の衝突がたくさんあってたいへんでしたよ。はっはっは。」
        とか、
        「いただいたソースには、strncasecmpという非標準の関数を使ってあったので苦労しました」
        とか、世の中悪意に満ちているとしか思えないコメントをくれた人がいました。
         
        #いったん引き継いだら後は知らんぞ。こんなもん。
        親コメント
        • うわああああああ(謎)

          「Windowsだと検索が面倒なんで、いただいたソース1ファイルにまとめちゃいました。やぁー。スタティックな変数の名前の衝突がたくさんあってたいへんでしたよ。はっはっは。」

          「いただいたソースには、strncasecmpという非標準の関数を使ってあったので苦労しました」

          この人、この業界向いてないね。向上心とかが一切見られないから、今後付いていけなくなるね。このままだと、まずオブジェクト嗜好^H^H指向あたりからがわからないままだろうし。

          ファイルスコープとか、関数とか、K&Rの課題を全部終わらせてからにしてほしいところ。

          検索がやりにくい、てことは、自ら検索をする方法をあんまり知っていないと言うのと一緒だよなあ。ほえ。

          親コメント

長期的な見通しやビジョンはあえて持たないようにしてる -- Linus Torvalds

処理中...