转载:UNIX环境高级编程,apue.h的设置

本文详细介绍了如何下载Advanced Programming in the UNIX® Environment (APUE)的源码,并提供了逐步指导来解压文件、配置所需的apue.h头文件及error.c源文件。通过将这些文件正确放置并进行适当配置,读者可以确保后续的开发工作中能够顺利引用APUE提供的功能。

请看原文
https://blog.youkuaiyun.com/qq_41899773/article/details/107376991

一、下载源码

二、解压这个文件

tar -zxvf src.tar.gz
解压后文件会放在apue.2e目录下,这个目录里包含了书本上的源码,也包含了apue.h和error.c文件。

三、复制apue.h到/usr/include/下

cp ./apue.2e/include/apue.h /usr/include/
此时/usr/include/下没有apue.h文件,直接复制即可

四、复制error.c到/usr/include/下

cp ./apue.2e/lib/error.c /usr/include/
注意看清楚这里error.c,步骤三是errer.h

五、/usr/include/apue.h文件 配置

使用vi编辑器打开文件:

vi /usr/include/apue.h
在文件最后#endif前加上包含error.c的代码:

#include “error.c”;

在Java中,`java.util.prefs`包提供了一个持久化存储的机制,用于保存和检索用户或系统级别的偏好设置。其底层实现依赖于文件系统(`FileSystemPreferences`)或注册表(在Windows平台上)。当调用`sync()`方法时,系统会尝试将内存中的偏好数据同步到持久化存储中。 在某些情况下,可能会出现同步失败的问题,例如`syncWorld`方法执行时,出现文件锁定(`fl.lock`)失败的情况。这种问题通常与以下原因有关: - **文件锁竞争**:多个线程或进程同时尝试访问或修改同一个偏好节点,导致文件锁无法获取。这种情况下,可能会抛出异常或同步失败[^1]。 - **权限问题**:运行Java应用的用户没有对偏好文件所在目录的读写权限,导致无法创建或更新偏好文件。 - **文件损坏或残留锁文件**:在异常退出或崩溃后,可能遗留了锁文件或文件状态不一致,导致后续同步失败。 - **并发访问冲突**:多线程环境下,若未正确处理偏好节点的同步访问,可能会导致`sync()`操作失败。 ### 解决方案 1. **检查文件系统权限** 确保运行Java应用的用户对偏好文件的存储路径具有读写权限。在Linux/Unix系统中,偏好文件通常存储在`~/.java/.userPrefs`目录下,Windows系统中则位于用户目录下的`.java/.userPrefs`。 2. **清理残留的锁文件** 如果系统异常退出,可能导致锁文件未被释放。可以尝试手动删除`.java/.userPrefs`目录下的`.lck`文件或整个偏好目录(注意备份重要数据),然后重启应用让系统重新生成偏好文件。 3. **避免多线程并发写入冲突** 在多线程环境中,应使用同步机制确保对偏好节点的访问是线程安全的。例如: ```java Preferences prefs = Preferences.userNodeForPackage(MyClass.class); synchronized (prefs) { prefs.put("key", "value"); try { prefs.sync(); } catch (BackingStoreException e) { e.printStackTrace(); } } ``` 4. **使用注册表替代文件系统(仅限Windows)** 如果持续遇到文件系统偏好同步问题,可以尝试切换到注册表实现。通过设置系统属性: ```bash -Djava.util.prefs.systemRoot=C:/Windows/System32/config/systemprofile/.java ``` 5. **增加日志输出** 启用Java偏好系统的调试日志可以帮助定位问题。可以通过JVM参数启用调试输出: ```bash -Djava.util.prefs.Debug=true ``` 这会输出偏好系统在加载、同步和存储过程中的详细信息,有助于排查具体失败原因。 6. **升级JDK版本** 如果使用的是较旧的JDK版本,可能存在已知的偏好系统实现缺陷。建议升级到较新的JDK版本(如JDK 11或更高),以获得更稳定的偏好系统实现。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值