Tôi đã tìm thấy đoạn mã này trong gói Haskell sendfile
:'#type' có nghĩa là gì trong Giao diện chức năng nước ngoài của Haskell?
-- sendfile64 gives LFS support
foreign import ccall unsafe "sendfile64" c_sendfile
:: Fd -> Fd -> Ptr (#type off64_t) -> (#type size_t) -> IO (#type ssize_t)
1) gì #type
nghĩa và 2) tại sao tôi nhận được lỗi này,
[1 of 1] Compiling Linux.Splice (splice.hs, splice.o)
splice.hs:40:12: parse error on input `type'
khi bản thân tôi cố gắng sử dụng nó như sau ?:
ghc --make splice.hs
splice.hs:
{-# LANGUAGE ForeignFunctionInterface #-}
module Linux.Splice where
import Data.Word
import System.Posix.Types
-- SPLICE
-- fcntl.h
-- ssize_t splice(
-- int fd_in,
-- loff_t* off_in,
-- int fd_out,
-- loff_t* off_out,
-- size_t len,
-- unsigned int flags
--);
foreign import ccall unsafe "fnctl.h splice" c_splice
:: Fd
-> Ptr (#type {- < parse error -} loff_t)
-> Fd
-> Ptr (#type loff_t)
-> (#type size_t)
-> Word
-> IO (#type ssize_t)
(sử dụng GHC 7.4.x)
http://www.haskell.org/ghc/docs/latest/html/users_guide/hsc2hs.html – sdcvvc
Tôi nên chỉ ra rằng nhập khẩu nước ngoài này không được ** đánh dấu là 'không an toàn'. Khi một hàm ngoài đánh dấu các khối 'không an toàn', nó có thể ngăn chặn các luồng khác chạy (trong một chương trình được biên dịch bằng GHC với '-readed'). –
@JoeyAdams Oh cảm ơn rất nhiều vì đã chỉ ra điều đó! Tôi đang làm việc trên một thực hiện được đánh bóng của nối ống nối mạng cho máy chủ proxy của tôi. Mà tôi hy vọng sẽ sử dụng trên Linux thay vì đọc/ghi vòng tôi vẫn sẽ tiếp tục sử dụng trên hệ điều hành khác trong thời gian này. –