運行一段時間後 `fopen("/proc/gpio", "r")` 返回 NULL。需打印具體錯誤碼定位。
fp = fopen("/proc/gpio", "r");
if (!fp) {
int err = errno;
syslog(LOG_ERR, "open /proc/gpio failed: %s (errno=%d)", strerror(err), err);
// 或 perror("open gpio");
return;
}
| errno | 宏 | 可能原因 |
|---|---|---|
| 24 | EMFILE | 進程文件描述符耗盡(`ulimit -n` 默認 1024),檢查是否有未 close 的 fopen |
| 13 | EACCES | 權限不足,/proc/gpio 需 root 或特定 capability |
| 2 | ENOENT | 文件不存在,內核模組未載入或掛載點變化 |
| 5 | EIO | I/O 錯誤,硬體/驅動異常 |