ルートとして実行しているプログラムがあり、別のプログラムを呼び出して実行します(A)。
ログオンしたユーザーとして実行したい。コマンドを使用しました:su - 'username' -c A、
またはメイン関数で、私は呼び出しました: setuid(current_uid_logged).
しかし、root プロセスでログオンしたユーザー名または uid を取得する方法がわかりません。
私が試した方法:getenv("USERNAME")またはgetlogin()常にrootアカウントを返します。と混同しました。getlogin()カーネルの起動時にプログラムが実行され、ユーザーのログインを待機します (ユーザーのログオンを検出するために実行中の Finder プロセス (Mac OSX) を待機するスレッドがあります)。10 秒待って呼び出しますgetlogin()が、いつか返されますrootただし、ユーザー ログインを返すことができます。ユーザーがログオンしたときにFinderプロセスが実行されていると思います。しかし、sudoコマンドで実行するアプリを呼び出すと、getlogin()常に現在ログオンしているユーザーが返されます。
どうすればいいですか?