C Standard Library
Base.Libc.malloc
— Functionmalloc(size::Integer) -> Ptr{Cvoid}
Call malloc
from the C standard library.
Base.Libc.calloc
— Functioncalloc(num::Integer, size::Integer) -> Ptr{Cvoid}
Call calloc
from the C standard library.
Base.Libc.realloc
— Functionrealloc(addr::Ptr, size::Integer) -> Ptr{Cvoid}
Call realloc
from the C standard library.
See warning in the documentation for free
regarding only using this on memory originally obtained from malloc
.
Base.memcpy
— Functionmemcpy(dst::Ptr, src::Ptr, n::Integer) -> Ptr{Cvoid}
Call memcpy
from the C standard library.
Support for memcpy
requires at least Julia 1.10.
Base.memmove
— Functionmemmove(dst::Ptr, src::Ptr, n::Integer) -> Ptr{Cvoid}
Call memmove
from the C standard library.
Support for memmove
requires at least Julia 1.10.
Base.memset
— Functionmemset(dst::Ptr, val, n::Integer) -> Ptr{Cvoid}
Call memset
from the C standard library.
Support for memset
requires at least Julia 1.10.
Base.memcmp
— Functionmemcmp(a::Ptr, b::Ptr, n::Integer) -> Int
Call memcmp
from the C standard library.
Support for memcmp
requires at least Julia 1.9.
Base.Libc.free
— Functionfree(addr::Ptr)
Call free
from the C standard library. Only use this on memory obtained from malloc
, not on pointers retrieved from other C libraries. Ptr
objects obtained from C libraries should be freed by the free functions defined in that library, to avoid assertion failures if multiple libc
libraries exist on the system.
Base.Libc.errno
— Functionerrno([code])
Get the value of the C library's errno
. If an argument is specified, it is used to set the value of errno
.
The value of errno
is only valid immediately after a ccall
to a C library routine that sets it. Specifically, you cannot call errno
at the next prompt in a REPL, because lots of code is executed between prompts.
Base.Libc.strerror
— Functionstrerror(n=errno())
Convert a system call error code to a descriptive string
Base.Libc.GetLastError
— FunctionGetLastError()
Call the Win32 GetLastError
function [only available on Windows].
Base.Libc.FormatMessage
— FunctionFormatMessage(n=GetLastError())
Convert a Win32 system call error code to a descriptive string [only available on Windows].
Base.Libc.time
— Methodtime(t::TmStruct) -> Float64
Converts a TmStruct
struct to a number of seconds since the epoch.
Base.Libc.strftime
— Functionstrftime([format], time)
Convert time, given as a number of seconds since the epoch or a TmStruct
, to a formatted string using the given format. Supported formats are the same as those in the standard C library.
Base.Libc.strptime
— Functionstrptime([format], timestr)
Parse a formatted time string into a TmStruct
giving the seconds, minute, hour, date, etc. Supported formats are the same as those in the standard C library. On some platforms, timezones will not be parsed correctly. If the result of this function will be passed to time
to convert it to seconds since the epoch, the isdst
field should be filled in manually. Setting it to -1
will tell the C library to use the current system settings to determine the timezone.
Base.Libc.TmStruct
— TypeTmStruct([seconds])
Convert a number of seconds since the epoch to broken-down format, with fields sec
, min
, hour
, mday
, month
, year
, wday
, yday
, and isdst
.
Base.Libc.FILE
— TypeFILE(::Ptr)
FILE(::IO)
A libc FILE*
, representing an opened file.
It can be passed as a Ptr{FILE}
argument to ccall
and also supports seek
, position
and close
.
A FILE
can be constructed from an ordinary IO
object, provided it is an open file. It must be closed afterward.
Examples
julia> using Base.Libc
julia> mktemp() do _, io
# write to the temporary file using `puts(char*, FILE*)` from libc
file = FILE(io)
ccall(:fputs, Cint, (Cstring, Ptr{FILE}), "hello world", file)
close(file)
# read the file again
seek(io, 0)
read(io, String)
end
"hello world"
Base.Libc.flush_cstdio
— Functionflush_cstdio()
Flushes the C stdout
and stderr
streams (which may have been written to by external C code).
Base.Libc.systemsleep
— Functionsystemsleep(s::Real)
Suspends execution for s
seconds. This function does not yield to Julia's scheduler and therefore blocks the Julia thread that it is running on for the duration of the sleep time.
See also sleep
.
Base.Libc.mkfifo
— Functionmkfifo(path::AbstractString, [mode::Integer]) -> path
Make a FIFO special file (a named pipe) at path
. Return path
as-is on success.
mkfifo
is supported only in Unix platforms.
mkfifo
requires at least Julia 1.11.