# 2025q1 Note3 (quiz6) [week6](https://hackmd.io/@sysprog/linux2025-quiz6) 利用 select 系統呼叫開發類似 traceroute 的程式。 回憶 lab0 中瀏覽器的[段落](https://hackmd.io/@sysprog/linux2025-lab0/%2F%40sysprog%2Flinux2025-lab0-c) man 文件說他可以同時讀取多個 descripter ,這是一個標準函式類似 printf 。另外,都叫作 traceroute ,本質上當作類似 ip 版的 google 地圖,利用行程規劃來想,就有點類似了。而且節點間,都必須距離近,有網路(道路)連接節點。 >int ret = select(AAAA, BBBB, NULL, NULL, &timeout); if (ret <= 0) return ret; 考慮 FD_SET 是把前者加到後者,AAAA 應為 recv_sock + 1 仿造 lab0 網頁伺服器。BBBB = &readfds 為 descripter 的集合。 >static uint8_t rand_range_256(void) { return (uint8_t) (random64() >> CCCC); } 唉,就是一個除法產生 0~256,那就是 257 囉。阿不是,是要取最高位數前八位,所以是 64-8 = 56。 >uintptr_t os_random(uintptr_t seed) { uintptr_t x = (uintptr_t) DDDD ^ seed; 根據[教材](https://hackmd.io/@sysprog/linux2025-kxo-e#xoroshiro-%E4%BA%82%E6%95%B8%E7%94%A2%E7%94%9F%E5%99%A8) 提到 Address Space Layout Randomization (ASLR) 有 commit [7a51365](https://github.com/weihsinyeh/lab0-c/blob/7a51365cfc0ba3815143a5c8fbe4bed5de846014/qtest.c) DDDD = &os_random 。 但讓我消化一下,讀讀為什麼是這樣子。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up