gethostname的背后機制

有些應(yīng)用在啟動的過程中為了更友好的展示叉讥,會自動去獲取當前機器的hostname链峭,這時會調(diào)用到gethostname系統(tǒng)調(diào)用泰偿,通過man gethostname可以查看其詳情沈撞,但其背后又是怎樣一個流程呢?我們通過strace來看一下汰寓。

先上一個簡單的代碼口柳,用于獲取hostname。

#include <stdio.h>
#include <stdlib.h>

int main(void) {

    char hostname[1024];
    gethostname(hostname, 1024);

    puts(hostname);

    return EXIT_SUCCESS;
}

然后執(zhí)行如下的命令

gcc gethostname.c -o gethostname
strace ./gethostname

輸出結(jié)果如下:

execve("./gethostname", ["./gethostname"], [/* 23 vars */]) = 0
brk(0)                                  = 0x25fb000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b89ec0e2000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=44475, ...}) = 0
mmap(NULL, 44475, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2b89ec0e3000
close(3)                                = 0
open("/lib64/libc.so.6", O_RDONLY)      = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0p\356\241\0068\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1926760, ...}) = 0
......
uname({sys="Linux", node="yourhost", ...}) = 0
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2b89ec0e3000
write(1, "yourhost\n", 26yourhost
) = 26
exit_group(0)

其中有一條uname的系統(tǒng)調(diào)用有滑,如果我們執(zhí)行uname -n跃闹,可以得到當前機器的hostname。所以原理就在這里毛好,最后望艺,strace是個好東西。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末肌访,一起剝皮案震驚了整個濱河市找默,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌吼驶,老刑警劉巖惩激,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件店煞,死亡現(xiàn)場離奇詭異,居然都是意外死亡咧欣,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進店門轨帜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來魄咕,“玉大人,你說我怎么就攤上這事蚌父∠迹” “怎么了?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵苟弛,是天一觀的道長喝滞。 經(jīng)常有香客問我,道長膏秫,這世上最難降的妖魔是什么右遭? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮缤削,結(jié)果婚禮上窘哈,老公的妹妹穿的比我還像新娘。我一直安慰自己亭敢,他們只是感情好滚婉,可當我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著帅刀,像睡著了一般让腹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上扣溺,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天骇窍,我揣著相機與錄音,去河邊找鬼锥余。 笑死像鸡,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的哈恰。 我是一名探鬼主播只估,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼着绷!你這毒婦竟也來了蛔钙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤荠医,失蹤者是張志新(化名)和其女友劉穎吁脱,沒想到半個月后桑涎,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡兼贡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年攻冷,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片遍希。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡等曼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出凿蒜,到底是詐尸還是另有隱情禁谦,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布废封,位于F島的核電站州泊,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏漂洋。R本人自食惡果不足惜遥皂,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望刽漂。 院中可真熱鬧渴肉,春花似錦、人聲如沸爽冕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽颈畸。三九已至乌奇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間眯娱,已是汗流浹背礁苗。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留徙缴,地道東北人试伙。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像于样,于是被迫代替她去往敵國和親疏叨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,494評論 2 348

推薦閱讀更多精彩內(nèi)容

  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯誤還是無法避免 以后資料會慢慢更新 大...
    數(shù)據(jù)革命閱讀 12,146評論 2 34
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理穿剖,服務(wù)發(fā)現(xiàn)蚤蔓,斷路器,智...
    卡卡羅2017閱讀 134,629評論 18 139
  • Ubuntu的發(fā)音 Ubuntu吐辙,源于非洲祖魯人和科薩人的語言宣决,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢閱讀 99,201評論 9 467
  • 點擊查看原文 Web SDK 開發(fā)手冊 SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個完善的 IM 系統(tǒng)...
    layjoy閱讀 13,700評論 0 15
  • 我的寶貝你現(xiàn)在八個多月了昏苏。你這段時間本領(lǐng)可大了不少尊沸,想坐就坐,想爬就撒了歡的爬追都追不上捷雕,還能扶著東西自己站起來椒丧。...
    雕琢?xí)r光925閱讀 257評論 0 0