Skip to main content

Command Palette

Search for a command to run...

#c

Articles tagged with #c

  1. Linux fcntl Filelock 中的小坑:在同一 Process 不能跨 Thread 使用

    在 Linux 系統下,我們可以透過 fcntl 來提供跨 Process 的 Read/Write Filelock,但是卻有一個小小的坑需要注意,那就是在同一個 Process 內,不可以跨 Thread 使用這個 Lock。 舉個例子,假設我們有一個 Process A,會定期地更新 /srv/mydata 這個資料夾,當更新時,會去使用 WLock /srv/mydata.lock 來鎖住該資料夾。另一方面,Process B 的 Thread 1 則需要讀取 /srv/mydata/...

    Apr 10, 20231 min read57
  2. gmtime_r 使用性?

    故事 gmtime_r 很坑。 會用到 gmtime_r 的多少是因為 gmtime 不是 thread-safe 的,但又需要 threading 來增加效率。 但假如使用者會很頻繁的呼叫他,那就可能要考慮其他函數。 為什麼? gmtime_r 的運作 gmtime_r 的功能是把 Unix timestamp 轉換出 CST+0 時區的年月日時分秒以及其他資訊(如星期)。這個函數事實上會和 localtime_r 共用一個計算時間的函數。 這就是主要的問題,localtime_r 會需要用到...

    Jan 31, 20231 min read38
  3. C Error Handling: errno

    最近碰到的坑,但查了下發現是基礎概念,整理記錄一下。 背景: gmtime_r 他會從傳進去的 time_t 算出年月日、星期、時分秒。這並不是件簡單的事情,除了閏年外,假如考慮進時區的話,還要計入日光節約時間,會需要讀取一些定期更新的檔案。 gmtime_r 的細節不是這文章的重點,只在這裡大概說一下它的功能。 使用並且處理 #include <ctime> #include <cstdio> #include <errno.h> int main() { time_t tt = ...

    Jan 20, 20231 min read21