Я использовал эту прагму для импорта getpid
из C:
function Get_Process_ID return Process_ID;
pragma Import (C, Get_Process_ID, "getpid");
Я ожидал, что это будет немного сложнее. Чтобы использовать getpid
в C, мне нужно явно включить заголовочный файл unistd.h; в приведенной выше прагме я не делал никаких ссылок на заголовочный файл. Как GNAT точно знает, где найти getpid
?
Редактировать:
Вот минимальный рабочий пример:
with Ada.Text_IO;
procedure Main is
subtype Process_ID is Integer;
function Get_Process_ID return Process_ID;
pragma Import (C, Get_Process_ID, "getpid");
begin
Ada.Text_IO.Put_Line (Process_ID'Image (Get_Process_ID));
end Main;
Сохранено как основное .adb, это компилируется с помощью следующей команды:
gnat make main.adb
Я использую fre sh установку пакета gnat
из репозиториев программного обеспечения Ubuntu 18.04 без файлов конфигурации или файлов проекта. Версия GNAT: 7.5.0.