GSL Shell 学習:LFS 自作始め

2016-02-05 :  PCクリニック
本文の前に、
-・・・ -・-
現時点での blogramのランクインカテゴリは、
6、3、0、0、1、 0、0、0、0、0(40)で、換算ポイント 86pt 。
「化学業界」「硝子業界」「e-radio」「グルコサミン」、
「Python」「FM COCOLO」「Firefox」bg値変動のみ。
「Perl」「C言語」「FM青森」全く変化無し。
・-・ - -・

さて、本文。(これも Lua 学習)

前(2016-02-04)の記事:
GSL Shell 学習:Linear Least Squares fit
に続く学習。


今月初め(2016-02-01)の記事:
Lua 学習:The GSL Shell Project
で書いた如く、

  “GSL Shell”は、
  “LuaJIT”の拡張版で“GSL”の機能も含んでいる。

だがしかし、“GSL Shell”には、
LuaJIT : Just-In-Time Compiler (JIT) for the Lua …
で書いた“ULua”には含まれていた:“LFS ( LuaFileSystem )”が
含まれていない!

なので、
Lua 学習:FFI Library」で書いた、
C Library Function」を使って
自作することにした。

だが、
“stat”関数が無い???

「ファイルサイズ取得」とかで検索しても、
皆さん(?)
  C言語にはファイルサイズを知るための関数はありません。
  ファイルサイズを知るには、
  ファイルを開いてからファイルポインタを移動して求めます。
などと書いている。

しつこく 検索して 見つけた!
「Microsoft」の「MSDN」の
_stat、_wstat 関数

  ファイルのステータス情報を取得します。


で、“FFI”でコーディング:
local ffi = require'ffi'
ffi.cdef[[
int _stat ( const char* fname, void* buf );
]]
fnm = ffi.new( 'uint8_t[?]', #Fname )
stat = ffi.new( 'uint8_t[?]', 255 )
a = ffi.new( 'int32_t[1]' )
Fname = 'test.dat'
fnm = Fname -- これ必要
_ = ffi.C._stat( fnm, stat )
ffi.copy( a, stat+20, 4 ) -- 構造体の中を直接指定
SZ=a[0]
print( SZ ) -- ファイルサイズ
これで、
Lua 学習:LFS ( LuaFileSystem )
の前半はOK
後半は、全く同じコード。

この調子で行けば、“LFS”相当品が作れる?


本日はここまで。


Lua ( GSL Shell ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


151231
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク