我有一个以 root 身份运行的程序并调用另一个程序来运行(A)。
我希望 A 在用户登录时运行。我用过命令:su - 'username' -c A,
或在 A main 函数中,我调用了:setuid(current_uid_logged).
但我不知道在 root 进程中获取用户名登录或 uid 的方法。
我尝试过的任何方式:getenv("USERNAME")或getlogin()总是返回root帐户。我很困惑getlogin(),当内核启动并等待用户登录时,我的程序正在运行(我有一个线程等待 Finder 进程(Mac OSX)运行以检测用户登录),等待 10 秒并调用getlogin(),但有时,它返回root但可以返回用户登录。我认为 Finder 进程在用户登录时正在运行。但是当我调用我的应用程序以使用sudo命令运行时,getlogin()总是返回当前用户登录。
我该怎么做呢?