Мы знаем, что unistd.h является важным заголовком, однако я не уверен, что он исходит из источника ядра или он установлен до тех пор, пока мы не установить libc?где is /usr/include/unistd.h и limit.h from, glibc или kernel
ответ
в фетровой шляпе
# rpm -qf /usr/include/unistd.h
eglibc-headers-2.13-2.21.i686
мы можем увидеть эту часть в файле заголовка
this file is part of the GNU C Library.
и в версии ядра 2.6.32.21 мы можем увидеть
/* kernel/include/linux/unistd.h */
#include <asm/unistd.h>
мы предполагаем X86
/* kernel/arch/x86/include/asm/unistd.h */
# ifdef CONFIG_X86_32
# include "unistd_32.h"
# else
# include "unistd_64.h"
# endif
и в файле есть системный вызов. не мы обычно используем unistd.h
/*
* This file contains the system call numbers.
*/
#define __NR_restart_syscall 0
#define __NR_exit 1
#define __NR_fork 2
#define __NR_read 3
#define __NR_write 4
#define __NR_open 5
#define __NR_close 6
#define __NR_waitpid 7
#define __NR_creat 8
Очень полезный намек. Я пробую это на моем, это говорит glibc-заголовки – dspjm
Но вот еще вопрос, является ли контент в этих файлах определенным ядром или определяется glibc. Я думал, что эти файлы являются платформой и дистрибутивом, поэтому я считаю, что для хранения подобной информации должно быть место для ядра. – dspjm
в glibc, я думаю, что он может получить системную среду, так же как платформу и версию дистрибутива. ядру не нужно хранить информацию для пользовательского пространства. Это неразумно – syler
Он исходит из источника libc; unistd.h - стандартный заголовок POSIX; все, что угодно от ядра, будет включено в это при необходимости. вы не должны использовать ядро unistd.h для чего угодно, кроме программирования ядра :) –