uname(2) - wariua/manpages-ko GitHub Wiki

NAME

uname - ν˜„μž¬ 컀널에 λŒ€ν•œ 이름과 정보 μ–»κΈ°

SYNOPSIS

#include <sys/utsname.h>

int uname(struct utsname *buf);

DESCRIPTION

uname()은 μ‹œμŠ€ν…œ 정보λ₯Ό bufκ°€ κ°€λ¦¬ν‚€λŠ” ꡬ쑰체둜 λ°˜ν™˜ν•œλ‹€. utsname κ΅¬μ‘°μ²΄λŠ” <sys/utsname.h>에 μ •μ˜λ˜μ–΄ μžˆλ‹€.

struct utsname {
    char sysname[];    /* 운영 체제 이름 (κ°€λ Ή "Linux") */
    char nodename[];   /* "κ΅¬ν˜„μ—μ„œ κ·œμ •ν•˜λŠ” μ–΄λ–€ 망"
                          λ‚΄μ—μ„œμ˜ 이름 */
    char release[];    /* 운영 체제 릴리슀 (κ°€λ Ή "2.6.28") */
    char version[];    /* 운영 체제 버전 */
    char machine[];    /* ν•˜λ“œμ›¨μ–΄ μ‹λ³„μž */
#ifdef _GNU_SOURCE
    char domainname[]; /* NIS λ˜λŠ” YP 도메인 이름 */
#endif
};

struct utsname λ‚΄ λ°°μ—΄λ“€μ˜ κΈΈμ΄λŠ” λͺ…μ„Έλ˜μ–΄ μžˆμ§€ μ•Šλ‹€ (NOTES μ°Έκ³ ). κ·Έ ν•„λ“œλ“€μ€ 널 λ°”μ΄νŠΈ('\0')둜 λλ‚œλ‹€.

RETURN VALUE

성곡 μ‹œ 0을 λ°˜ν™˜ν•œλ‹€. 였λ₯˜ μ‹œ -1을 λ°˜ν™˜ν•˜λ©° errnoλ₯Ό 적절히 μ„€μ •ν•œλ‹€.

ERRORS

EFAULT
bufκ°€ μœ νš¨ν•˜μ§€ μ•Šλ‹€.

CONFORMING TO

POSIX.1-2001, POSIX.1-2008, SVr4. 4.3BSDμ—λŠ” uname() 호좜이 μ—†λ‹€.

domainname 멀버(NIS λ˜λŠ” YP 도메인 이름)λŠ” GNU ν™•μž₯이닀.

NOTES

이 ν•¨μˆ˜λŠ” μ‹œμŠ€ν…œ 호좜이고 μ•„λ§ˆ 운영 μ²΄μ œλŠ” 자기 이름과 릴리슀, 버전을 μ•Œκ³  μžˆμ„ 것이닀. 또 μžκΈ°κ°€ μ–΄λ–€ ν•˜λ“œμ›¨μ–΄ μœ„μ—μ„œ λ„λŠ”μ§€λ„ μ•ˆλ‹€. κ·Έλž˜μ„œ ꡬ쑰체의 λ„€ ν•„λ“œμ—λŠ” μ˜λ―Έκ°€ μžˆλ‹€. 반면 nodename ν•„λ“œμ—λŠ” μ˜λ―Έκ°€ μ—†λ‹€. μ–΄λ–€ κ·œμ •λΌ μžˆμ§€ μ•Šμ€ λ§μ—μ„œ ν˜„ λ¨Έμ‹ μ˜ 이름인데, 보톡 머신듀은 μ—¬λŸ¬ 망 내에 있고 μ—¬λŸ¬ 이름을 κ°€μ§€κ³  μžˆλ‹€. κ²Œλ‹€κ°€ 컀널이 그런 λ‚΄μš©μ„ μ•Œ 방법도 μ—†μœΌλ―€λ‘œ 여기에 뭐라고 λ‹΅ν• μ§€λ₯Ό μ»€λ„μ—κ²Œ μ•Œλ € μ£Όμ–΄μ•Ό ν•œλ‹€. domainname ν•„λ“œμ—μ„œλ„ λ§ˆμ°¬κ°€μ§€μ΄λ‹€.

이λ₯Ό μœ„ν•΄ λ¦¬λˆ…μŠ€μ—μ„œλŠ” μ‹œμŠ€ν…œ 호좜 sethostname(2)κ³Ό setdomainname(2)을 μ‚¬μš©ν•œλ‹€. 참고둜 μ–΄λŠ ν‘œμ€€μ—μ„œλ„ sethostname(2)으둜 μ„€μ •ν•œ 호슀트λͺ…이 uname()이 λ°˜ν™˜ν•˜λŠ” ꡬ쑰체의 nodename ν•„λ“œμ™€ 같은 λ¬Έμžμ—΄μ΄λΌκ³  λ§ν•˜μ§€ μ•ŠλŠ”λ‹€. (μ‹€μ œλ‘œ μ–΄λ–€ μ‹œμŠ€ν…œμ—μ„œλŠ” 256λ°”μ΄νŠΈ 호슀트λͺ…κ³Ό 8λ°”μ΄νŠΈ λ…Έλ“œλͺ…이 κ°€λŠ₯ν•˜λ‹€.) ν•˜μ§€λ§Œ λ¦¬λˆ…μŠ€μ—μ„œλŠ” κ·Έλ ‡λ‹€. setdomainname(2)κ³Ό domainname ν•„λ“œλ„ λ§ˆμ°¬κ°€μ§€μ΄λ‹€.

ꡬ쑰체의 ν•„λ“œ κΈΈμ΄λŠ” λ‹€μ–‘ν•˜λ‹€. μ–΄λ–€ 운영 μ²΄μ œλ‚˜ λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œλŠ” 9, 33, 65, 257을 ν•˜λ“œμ½”λ”© ν•΄μ„œ μ‚¬μš©ν•œλ‹€. λ‹€λ₯Έ μ‹œμŠ€ν…œμ—μ„œλŠ” SYS_NMLNμ΄λ‚˜ _SYS_NMLN, UTSLEN, _UTSNAME_LENGTHλ₯Ό μ‚¬μš©ν•œλ‹€. 이 μƒμˆ˜λ“€μ„ μ΄μš©ν•˜λŠ” 건 λΆ„λͺ… μ’‹μ§€ μ•Šμ€ 생각이닀. κ·Έλƒ₯ sizeof(...)λ₯Ό μ‚¬μš©ν•˜λΌ. 인터넷 호슀트λͺ…을 담을 수 μžˆλ„λ‘ 257을 μ„ νƒν•˜λŠ” κ²½μš°κ°€ λ§Žλ‹€.

/proc/sys/kernel/{ostype,hostname,osrelease,version,domainname}을 ν†΅ν•΄μ„œλ„ utsname 정보 일뢀에 μ ‘κ·Όν•  수 μžˆλ‹€.

C 라이브러리/컀널 차이

μ‹œκ°„μ΄ 흐λ₯΄λ©° utsname ꡬ쑰체가 μ»€μ§€λ©΄μ„œ μ„Έ κ°€μ§€ uname() 버전이 생겼닀. sys_olduname() (슬둯 __NR_oldolduname), sys_uname() (슬둯 __NR_olduname), 그리고 sys_newuname() (슬둯 __NR_uname)이닀. 첫 λ²ˆμ§Έμ—μ„œλŠ” λͺ¨λ“  ν•„λ“œλ₯Ό 길이 9둜 μ‚¬μš©ν–ˆκ³ , 두 λ²ˆμ§Έμ—μ„œλŠ” 65λ₯Ό μ‚¬μš©ν–ˆλ‹€. μ„Έ λ²ˆμ§Έμ—μ„œλ„ 65λ₯Ό μ‚¬μš©ν•˜μ§€λ§Œ domainname ν•„λ“œλ₯Ό μΆ”κ°€ν•œλ‹€. glibc의 uname() 래퍼 ν•¨μˆ˜μ—μ„œ 이런 μ„ΈλΆ€ 사항을 μ‘μš©μ—κ²Œ 감좰 μ£Όκ³  컀널이 μ œκ³΅ν•˜λŠ” κ°€μž₯ μ΅œμ‹  λ²„μ „μ˜ μ‹œμŠ€ν…œ ν˜ΈμΆœμ„ λΆ€λ₯Έλ‹€.

SEE ALSO

uname(1), getdomainname(2), gethostname(2), namespaces(7)


2019-03-06

⚠️ **GitHub.com Fallback** ⚠️