1

我正在研究 Linux 和 FreeBSD。当我使用getpwnam()orgetpwuid()时,我得到一个指向结构的指针passwdchar*使用该结构成员的安全方法是passwd什么?

手册页说这个结构是一个静态对象,但会被后续调用覆盖,所以我想安全的方法是使用strdup()获取char*成员的副本,然后不再使用该passwd结构。

我的理解正确吗?

4

1 回答 1

4

最安全的方法是根本不使用它们,而是使用getpwnam_rand getpwuid_r,它将结果存储在调用者提供的缓冲区中。这不仅避免了您所询问的问题,而且还使您的代码可以安全地用于多线程进程。

于 2014-05-22T03:19:03.710 回答