[過去ログ] 関数型プログラミング言語Haskell Part16 (978レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
40
(2): 2011/10/08(土)14:49 AAS
FFI の質問です

C 言語で書かれた、FILE 構造体のポインタを引数として取る関数を
Haskell 側から使いたい場合、Haskell の openBinaryFile 関数などで得た
Handle 型の値は使えないのでしょうか(Handle 型を CFile 型に変換するなど)

もしかして、C 言語の open 関数も import して使う必要がありますか
41
(1): 2011/10/08(土)15:22 AAS
>>40
使えない
素直にFILE*を作るCライブラリを呼び出す

どうしてもHandleから作る必要があるなら fd を通す
handleToFd で Handle から fd にして
C の fdopen で fd からFILE* にして
とか

FILEとかHandleはライブラリも状態を持ってるから直接のマッピングは無理
fd は状態をカーネルが管理しているから、ライブラリ間では比較的ポータブルだけど
42
(2): 2011/10/08(土)15:43 AAS
>>40
open関数? openはファイルディスクリプタを返して、FILE構造体へのポインタを返すのはfopenでは?

一般論としては、CレベルのfdやFILE *を使いたいなら、Cのopenなりfopenなりをインポートする必要がある。
GHCの場合、System.Posix.Internals.c_open が Cのopenのラッパーなので、ファイルディスクリプタで良いなら、何とかこれを呼べばよいだろう。
でも、FILE *のほうは自分でfopenをimportするしかないと思う。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.044s