C Standard Library
Base.Libc.malloc — Functionmalloc(size::Integer) -> Ptr{Cvoid}Вызовите malloc из стандартной библиотеки C.
Base.Libc.calloc — Functioncalloc(num::Integer, size::Integer) -> Ptr{Cvoid}Вызовите calloc из стандартной библиотеки C.
Base.Libc.realloc — Functionrealloc(addr::Ptr, size::Integer) -> Ptr{Cvoid}Вызовите realloc из стандартной библиотеки C.
Смотрите предупреждение в документации для free относительно использования этого только с памятью, изначально полученной от malloc.
Base.memcpy — Functionmemcpy(dst::Ptr, src::Ptr, n::Integer) -> Ptr{Cvoid}Вызовите memcpy из стандартной библиотеки C.
Поддержка memcpy требует как минимум Julia 1.10.
Base.memmove — Functionmemmove(dst::Ptr, src::Ptr, n::Integer) -> Ptr{Cvoid}Вызовите memmove из стандартной библиотеки C.
Поддержка memmove требует как минимум Julia 1.10.
Base.memset — Functionmemset(dst::Ptr, val, n::Integer) -> Ptr{Cvoid}Вызовите memset из стандартной библиотеки C.
Поддержка memset требует как минимум Julia 1.10.
Base.memcmp — Functionmemcmp(a::Ptr, b::Ptr, n::Integer) -> IntВызовите memcmp из стандартной библиотеки C.
Поддержка memcmp требует как минимум Julia 1.9.
Base.Libc.free — Functionfree(addr::Ptr)Вызовите free из стандартной библиотеки C. Используйте это только для памяти, полученной с помощью malloc, а не для указателей, полученных из других библиотек C. Объекты Ptr, полученные из библиотек C, должны освобождаться с помощью функций free, определенных в этой библиотеке, чтобы избежать сбоев утверждений, если в системе существует несколько библиотек libc.
Base.Libc.errno — Functionerrno([code])Получить значение errno библиотеки C. Если указан аргумент, он используется для установки значения errno.
Значение errno действительно только сразу после ccall к рутине библиотеки C, которая его устанавливает. В частности, вы не можете вызывать errno на следующем приглашении в REPL, потому что между приглашениями выполняется много кода.
Base.Libc.strerror — Functionstrerror(n=errno())Преобразовать код ошибки системного вызова в описательную строку
Base.Libc.GetLastError — FunctionGetLastError()Вызовите функцию Win32 GetLastError [доступна только на Windows].
Base.Libc.FormatMessage — FunctionFormatMessage(n=GetLastError())Преобразует код ошибки системного вызова Win32 в описательную строку [доступно только на Windows].
Base.Libc.time — Methodtime(t::TmStruct) -> Float64Преобразует структуру TmStruct в количество секунд с начала эпохи.
Base.Libc.strftime — Functionstrftime([формат], время)Преобразует время, заданное в виде числа секунд с начала эпохи или TmStruct, в отформатированную строку с использованием данного формата. Поддерживаемые форматы такие же, как в стандартной библиотеке C.
Base.Libc.strptime — Functionstrptime([format], timestr)Парсит отформатированную строку времени в TmStruct, предоставляя секунды, минуты, часы, дату и т.д. Поддерживаемые форматы такие же, как в стандартной библиотеке C. На некоторых платформах временные зоны могут быть распознаны некорректно. Если результат этой функции будет передан в time для преобразования в секунды с начала эпохи, поле isdst должно быть заполнено вручную. Установка его в -1 укажет библиотеке C использовать текущие системные настройки для определения временной зоны.
Base.Libc.TmStruct — TypeTmStruct([seconds])Преобразует количество секунд с начала эпохи в развернутый формат с полями sec, min, hour, mday, month, year, wday, yday и isdst.
Base.Libc.FILE — TypeFILE(::Ptr)
FILE(::IO)FILE* из libc, представляющий открытый файл.
Его можно передать как аргумент 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 — Functionflush_cstdio()Сбрасывает потоки C stdout и stderr (в которые могло быть записано внешним C-кодом).
Base.Libc.systemsleep — Functionsystemsleep(s::Real)Приостанавливает выполнение на s секунд. Эта функция не передает управление планировщику Julia и, следовательно, блокирует поток Julia, в котором она выполняется, на время сна.
Смотрите также sleep.
Base.Libc.mkfifo — Functionmkfifo(path::AbstractString, [mode::Integer]) -> pathСоздайте специальный файл FIFO (именованный канал) по адресу path. Возвращает path как есть в случае успеха.
mkfifo поддерживается только на платформах Unix.
mkfifo требует как минимум Julia 1.11.