C Standard Library

Base.Libc.callocFunction
calloc(num::Integer, size::Integer) -> Ptr{Cvoid}

从 C 标准库调用 calloc

source
Base.Libc.reallocFunction
realloc(addr::Ptr, size::Integer) -> Ptr{Cvoid}

从 C 标准库调用 realloc

请参阅 free 文档中的警告,仅在最初从 malloc 获取的内存上使用此函数。

source
Base.memcpyFunction
memcpy(dst::Ptr, src::Ptr, n::Integer) -> Ptr{Cvoid}

从 C 标准库调用 memcpy

Julia 1.10

memcpy 的支持至少需要 Julia 1.10。

source
Base.memmoveFunction
memmove(dst::Ptr, src::Ptr, n::Integer) -> Ptr{Cvoid}

从 C 标准库调用 memmove

Julia 1.10

memmove 的支持至少需要 Julia 1.10。

source
Base.memsetFunction
memset(dst::Ptr, val, n::Integer) -> Ptr{Cvoid}

调用来自 C 标准库的 memset

Julia 1.10

memset 的支持至少需要 Julia 1.10。

source
Base.memcmpFunction
memcmp(a::Ptr, b::Ptr, n::Integer) -> Int

调用 C 标准库中的 memcmp

Julia 1.10

memcmp 的支持至少需要 Julia 1.9。

source
Base.Libc.freeFunction
free(addr::Ptr)

调用来自 C 标准库的 free。仅在从 malloc 获取的内存上使用此函数,而不是在从其他 C 库检索的指针上使用。来自 C 库的 Ptr 对象应由该库中定义的 free 函数释放,以避免在系统上存在多个 libc 库时出现断言失败。

source
Base.Libc.errnoFunction
errno([code])

获取 C 库的 errno 值。如果指定了参数,则用于设置 errno 的值。

errno 的值仅在对设置它的 C 库例程的 ccall 之后立即有效。具体来说,您不能在 REPL 的下一个提示符中调用 errno,因为在提示符之间执行了大量代码。

source
Base.Libc.FormatMessageFunction
FormatMessage(n=GetLastError())

将 Win32 系统调用错误代码转换为描述性字符串 [仅在 Windows 上可用]。

source
Base.Libc.timeMethod
time(t::TmStruct) -> Float64

TmStruct 结构转换为自纪元以来的秒数。

source
Base.Libc.strftimeFunction
strftime([format], time)

将时间(以自纪元以来的秒数或 TmStruct 给出)转换为使用给定格式的格式化字符串。支持的格式与标准 C 库中的格式相同。

source
Base.Libc.strptimeFunction
strptime([format], timestr)

将格式化的时间字符串解析为 TmStruct,提供秒、分钟、小时、日期等信息。支持的格式与标准 C 库中的格式相同。在某些平台上,时区可能无法正确解析。如果此函数的结果将传递给 time 以转换为自纪元以来的秒数,则 isdst 字段应手动填写。将其设置为 -1 将告诉 C 库使用当前系统设置来确定时区。

source
Base.Libc.TmStructType
TmStruct([秒])

将自纪元以来的秒数转换为分解格式,字段包括 secminhourmdaymonthyearwdayydayisdst

source
Base.Libc.FILEType
FILE(::Ptr)
FILE(::IO)

一个 libc FILE*,表示一个已打开的文件。

它可以作为 Ptr{FILE} 参数传递给 ccall,并且支持 seekpositionclose

可以从普通的 IO 对象构造一个 FILE,前提是它是一个已打开的文件。之后必须关闭它。

示例

julia> using Base.Libc

julia> mktemp() do _, io
           # 使用 libc 中的 `puts(char*, FILE*)` 写入临时文件
           file = FILE(io)
           ccall(:fputs, Cint, (Cstring, Ptr{FILE}), "hello world", file)
           close(file)
           # 再次读取文件
           seek(io, 0)
           read(io, String)
       end
"hello world"
source
Base.Libc.flush_cstdioFunction
flush_cstdio()

刷新 C 的 stdoutstderr 流(这些流可能已被外部 C 代码写入)。

source
Base.Libc.systemsleepFunction
systemsleep(s::Real)

暂停执行 s 秒。此函数不会让出 Julia 的调度器,因此会在睡眠时间内阻塞其运行的 Julia 线程。

另见 sleep.

source
Base.Libc.mkfifoFunction
mkfifo(path::AbstractString, [mode::Integer]) -> path

path 处创建一个 FIFO 特殊文件(命名管道)。成功时返回 path 原样。

mkfifo 仅在 Unix 平台上受支持。

Julia 1.11

mkfifo 至少需要 Julia 1.11。

source