/var/run/utmpを見て、consoleユーザを探せばいいんだと思ってたら大間違いですた。Fast User Switchingのときはutmpの内容が変らないんですなー、これが。愕然としたよほんとにもー。
一応、このへんに、Core Graphics Frameworkを使った例が書いてあるわけだけど、せいぜいCoreServiceくらいまでしか使わないコマンドラインツールではこの手は使えないって、ええーーーっ?!
八方塞がった…orz とくずおれてばかりもいられないので、ない知恵絞って、こんなコード書きましたよ。もう必死。
#include <stdio.h>
int
main( int argc, char *argv[])
{
FILE *fp;
char result[ 1024], *p;
if( ( fp = popen( "/usr/bin/osascript -e 'tell application \"System Events\" "
"to set aaa to name of current user'", "r")) != NULL) {
fgets( result, 1023, fp);
pclose( fp);
printf( "%s", result);
}
}
わーい、これでユーザ名が取れるヨ! ばんざーい!
…って、これなんだかものすごく時間かかるんですけど…。ていうかすでに反則。絶対もっとスマートな手があるような気がするんだけど、もう脳細胞がズタボロで全く思いつきません。誰か教えてくらさい(;´Д⊂
もドゾー。