bye

最近和同事在聊天時,因為手邊剛好在操作 MySQL,無聊間想到,不知道能不能輸入 bye 來結束連線呢?

結束 MySQL 互動介面時會出現 Bye

實際測試了下,沒有。於是開啟了我的第一個 Rust 練習作品之路。


實際開始動手前,依照我在 Linux 上的經驗,覺得如果沒有相關套件可以用的話,應該就不好搞;實際開始動手後,發現事情真的沒這麼單純,即便我使用 Command crate 也不過是在當下 Rust 主程序下開一個執行緒去執行 exit 或送出 EOF 而已,真正關閉的只有那支執行緒。

OK 那不然來研究一下 exit 是怎麼實作的吧!但是在看到近兩千行的 C 後,我覺得我果然不是大神,放棄這條路吧。

在思考兩天後都沒想到什麼好答案,最後轉向 Rust 臺灣社群,在那邊得到不少建議和想法。其中最簡單明瞭的方式就是直接向 parent process 送出 kill 訊號。簡單查一下發現內建標準函式庫就有可以取得 parent id 的模組,因此就決定採這條路先做看看,而最後就是下面的成果:

實際使用畫面

原本還有認真思考要不要發布到 crates.io 上,但發現 「bye」這個名稱已經被註冊佔用了(也看不出是在幹嘛的套件)想說就算了,之後再研究怎麼設定 cross compilation 然後放在 GitHub release 下吧(如果真的有人會用的話)

【2024.04.28 更新】
雖然已經研究完 cross compilation,不過考量到目前沒有新的想法來實現,目前只打包 x86 Linux 平台可用的執行檔,已經發布在 https://github.com/hms5232/bye/releases