Что я должен включить в программу C, чтобы использовать системные вызовы POSIX?

Я изучаю операционные системы из Книги MINIX (Танембаум), и одно из упражнений, которые я выполнил, — это создание ОЧЕНЬ простой оболочки.

Для этого в книге есть такой фрагмент кода:

#define TRUE 1

while (TRUE) {
   type_prompt();
   read_command(command, parameters);

   if (fork() != 0) {
      waitpid(-1, &status, 0);
   } else {
      execve(command, parameters, 0);
   }
}

Это не вся программа на C (очевидно), и мне нужно объявить некоторые переменные и написать некоторые функции самостоятельно. Но fork(), например, является системным вызовом (как сказано в книге, он должен быть совместим с POSIX).

Какие #include директивы должны быть в моей программе, чтобы их использовать, предполагая, что я уже компилирую эту программу в MINIX (и все остальные функции, которые я написал, находятся в том же файле .c)? Как работает использование системных вызовов Linux в программах на C?

Спасибо!


person prcastro    schedule 21.01.2014    source источник
comment
man <command-or-function> — очень важная команда, используемая, например, как man fork.   -  person Some programmer dude    schedule 21.01.2014
comment
Как упомянул Иоахим, вам нужно прочитать документы - для разных API нужны разные заголовки. Также вам может понадобиться определить макросы функций, которые указывают системе, какой конкретный набор API вы хотите активировать. См. man feature_test_macros. Вы, вероятно, будете в порядке, чтобы начать с -D_GNU_SOURCE, так как это включает в себя почти все.   -  person Michael Burr    schedule 21.01.2014
comment
Мастер справочных страниц, поставляемых с Linux, находится здесь: man7.org/linux/man-pages Один для fork() находится здесь: man7.org/linux/man -pages/man2/fork.2.html Справочник по POSIX: pubs.opengroup.org/onlinepubs/9699919799/functions/fork.html   -  person alk    schedule 21.01.2014
comment
Также изучите исходный код простых бесплатных программных оболочек.   -  person Basile Starynkevitch    schedule 21.01.2014


Ответы (1)


Поиск в Google man fork покажет справочную страницу linux и укажет, что ей нужно:

#include <unistd.h>
person woolstar    schedule 21.01.2014