Как вы уже заметили, fork () должен быть определен в unistd.h - по крайней мере, в соответствии со справочными страницами, которые поставляются с Ubuntu 11.10.Минимальный:
#include <unistd.h>
int main( int argc, char* argv[])
{
pid_t procID;
procID = fork();
return procID;
}
... собирается без предупреждений 11.10.
Кстати, какой дистрибутив UNIX / Linux вы используете?Например, я обнаружил несколько не примечательных функций, которые должны быть определены в заголовках Ubuntu 11.10.Например:
// string.h
char* strtok_r( char* str, const char* delim, char** saveptr);
char* strdup( const char* const qString);
// stdio.h
int fileno( FILE* stream);
// time.h
int nanosleep( const struct timespec* req, struct timespec* rem);
// unistd.h
int getopt( int argc, char* const argv[], const char* optstring);
extern int opterr;
int usleep( unsigned int usec);
Пока они определены в вашей библиотеке C, это не будет большой проблемой.Просто определите свои собственные прототипы в заголовке совместимости и сообщите о проблемах стандартного заголовка тому, кто поддерживает дистрибутив вашей ОС.