将特定于AIX的C函数调用迁移到Linux

时间:2019-07-16 17:51:51

标签: c linux migration aix porting

我从IBM AIX上的一个应用程序获得了源文件,我正在尝试在Linux上构建它们。但是,Linux上不存在AIX上名为usersec.huserpw.h的头文件。因此,在Linux上,这些功能会导致编译器错误:

usersec.h中声明

int     getuserattr (char *, char *, void *, int);

有关getuserattr的更多信息是here

userpw.h中声明

struct userpw
{
        char    *upw_passwd;            /* user's passwd */
        unsigned int    upw_flags;      /* flags of restrictions */
        time_t  upw_lastupdate;         /* date of last passwd update */
        char    upw_name[PW_NAMELEN];   /* user's name */
};

struct userpw   *getuserpw (); 
int setpwdb ();  
int endpwdb ();

请查找更多信息:getuserpwsetpwdb and endpwdb

如果有人知道如何在Linux上编写等效功能,那将是非常棒的事情。

1 个答案:

答案 0 :(得分:1)

您可能想使用getpwent及其相关功能。

  

getpwent()函数返回指向包含以下内容的结构的指针          密码数据库中记录的细分字段(例如,          本地密码文件/etc/passwd,NIS和LDAP)。第一次          getpwent()被调用,它返回第一项;之后,它          返回连续的条目。

     

setpwent()函数倒退到密码的开头          数据库。

     

endpwent()函数用于在关闭后关闭密码数据库          所有处理都已执行。

如果要获取特定用户的密码条目,可以使用getpwnam或其变体之一。

  

getpwnam()函数返回指向包含以下内容的结构的指针          密码数据库中记录的细分字段(例如,          与本地密码文件/etc/passwd,NIS和LDAP匹配的本地密码文件          用户名名称