Стандартная библиотека C
#
Base.Libc.malloc
— Function
malloc(size::Integer) -> Ptr{Cvoid}
Вызывает malloc
из стандартной библиотеки С.
#
Base.Libc.calloc
— Function
calloc(num::Integer, size::Integer) -> Ptr{Cvoid}
Вызывает calloc
из стандартной библиотеки С.
#
Base.memcpy
— Function
memcpy(dst::Ptr, src::Ptr, n::Integer) -> Ptr{Cvoid}
Вызывает memcpy
из стандартной библиотеки С.
Совместимость: Julia 1.10
Для поддержки |
#
Base.memmove
— Function
memmove(dst::Ptr, src::Ptr, n::Integer) -> Ptr{Cvoid}
Вызывает memmove
из стандартной библиотеки С.
Совместимость: Julia 1.10
Для поддержки |
#
Base.memset
— Function
memset(dst::Ptr, val, n::Integer) -> Ptr{Cvoid}
Вызывает memset
из стандартной библиотеки С.
Совместимость: Julia 1.10
Для поддержки |
#
Base.memcmp
— Function
memcmp(a::Ptr, b::Ptr, n::Integer) -> Int
Вызывает memcmp
из стандартной библиотеки С.
Совместимость: Julia 1.10
Для поддержки |
#
Base.Libc.free
— Function
free(addr::Ptr)
Вызывает free
из стандартной библиотеки С. Эту возможность можно использовать только для памяти, полученной от malloc
, но не для указателей, полученных от других библиотек С. Объекты Ptr
, полученные от библиотек С, должны высвобождаться соответствующими функциями, определенными в этих библиотеках, чтобы предотвратить сбои утверждения в случаях, когда в системе есть несколько библиотек libc
.
#
Base.Libc.errno
— Function
errno([code])
Получает значение из errno
библиотеки С. Если задан аргумент, он используется для указания значения errno
.
Значение errno
действительно только сразу после вызова ccall
подпрограммы библиотеки С, которая его задает. В частности, нельзя вызвать errno
в следующей командной строке в REPL, поскольку большая часть кода исполняется между командными строками.
#
Base.Libc.strerror
— Function
strerror(n=errno())
Преобразует код ошибки системного вызова в строку с описанием.
#
Base.Libc.GetLastError
— Function
GetLastError()
Вызывает функцию Win32 GetLastError
(доступно только в Windows).
#
Base.Libc.FormatMessage
— Function
FormatMessage(n=GetLastError())
Преобразует код ошибки системного вызова Win32 в строку с описанием (доступно только в Windows).
#
Base.Libc.time
— Method
time(t::TmStruct) -> Float64
Преобразует структуру TmStruct
в значение времени (в секундах) с начала отсчета времени.
#
Base.Libc.strftime
— Function
strftime([format], time)
Преобразует значение времени, указанное в секундах с начала отсчета времени или TmStruct
, в форматированную строку, используя заданный формат. Поддерживаются те же форматы, что и в стандартной библиотеке С.
#
Base.Libc.strptime
— Function
strptime([format], timestr)
Анализирует форматированную строку значения времени в TmStruct
, выдавая секунды, минуты, часы, дату и т. д. Поддерживаются те же форматы, что и в стандартной библиотеке С. На некоторых платформах часовые пояса анализируются некорректно. Если результат этой функции передается в time
для преобразования в значение времени (в секундах) с начала отсчета времени, поле isdst
должно заполняться вручную. Заданное значение -1
сообщает библиотеке С, что необходимо использовать текущие настройки системы для определения часового пояса.
#
Base.Libc.TmStruct
— Type
TmStruct([seconds])
Преобразует время в секундах с начала отсчета времени в формат с разбивкой (с полями sec
, min
, hour
, mday
, month
, year
, wday
, yday
и isdst
).
#
Base.Libc.FILE
— Type
FILE(::Ptr)
FILE(::IO)
Объект libc FILE*
, представляющий открытый файл.
Его можно передать как аргумент Ptr{FILE}
в ccall
. Кроме того, он поддерживает seek
, position
и close
.
FILE
можно создать из обычного объекта IO
при условии, что это открытый файл. Впоследствии он должен быть закрыт.
Примеры
julia> using Base.Libc
julia> mktemp() do _, io
# выполняем запись во временный файл, используя `puts(char*, FILE*)` из libc
file = FILE(io)
ccall(:fputs, Cint, (Cstring, Ptr{FILE}), "hello world", file)
close(file)
# снова считываем файл
seek(io, 0)
read(io, String)
end
"hello world"
#
Base.Libc.flush_cstdio
— Function
flush_cstdio()
Очищает потоки выполнения C stdout
и stderr
(в которые могла быть выполнена запись из стороннего кода С).
#
Base.Libc.mkfifo
— Function
mkfifo(path::AbstractString, [mode::Integer]) -> path
Создает специальный файл FIFO (именованный канал) в path
. При успешном выполнении возвращает path
как есть.
mkfifo
поддерживается только на платформах Unix.
Совместимость: Julia 1.11
Для |