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.