Странно это не получил должного ответа раньше.
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
int main(int argc, char **argv)
{
struct stat sb;
stat(argv[1], &sb)
printf("%d\n", sb.st_uid);
}
Он переносится между U * x и избегает utmp. Поздно, но может помочь другим.
Если вам нужно имя пользователя:
#include <pwd.h>
...
printf("%s\n", getpwuid(sb.st_uid)->pw_name);