2013-05-30 4 views
2

Мы знаем, что unistd.h является важным заголовком, однако я не уверен, что он исходит из источника ядра или он установлен до тех пор, пока мы не установить libc?где is /usr/include/unistd.h и limit.h from, glibc или kernel

+1

Он исходит из источника libc; unistd.h - стандартный заголовок POSIX; все, что угодно от ядра, будет включено в это при необходимости. вы не должны использовать ядро ​​unistd.h для чего угодно, кроме программирования ядра :) –

ответ

2

в фетровой шляпе

# 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 
+0

Очень полезный намек. Я пробую это на моем, это говорит glibc-заголовки – dspjm

+0

Но вот еще вопрос, является ли контент в этих файлах определенным ядром или определяется glibc. Я думал, что эти файлы являются платформой и дистрибутивом, поэтому я считаю, что для хранения подобной информации должно быть место для ядра. – dspjm

+1

в glibc, я думаю, что он может получить системную среду, так же как платформу и версию дистрибутива. ядру не нужно хранить информацию для пользовательского пространства. Это неразумно – syler