我想捕獲通過我的程序中的GUI登錄的用戶名。我的程序作爲root登錄的守護進程運行。如果非root用戶通過GUI登錄,我的程序應該被通知。 我粘貼我的當前程序,調用perl腳本,利用系統調用來檢查當前登錄的用戶是誰。我也粘貼了我的perl腳本以供參考。如何檢測在Linux中通過GUI登錄的用戶
#include <X11/Xlib.h>
#include <X11/Xos.h>
#include <X11/Xfuncs.h>
#include <X11/Xutil.h>
#include <X11/Xatom.h>
int main()
{
char *user;
char buf[1024];
int fd, ret;
fd = open("/tmp/log", O_TRUNC|O_RDWR|O_CREAT);
if (!fd) {
printf("Error opening file\n");
exit(1);
}
chmod("/tmp/log", S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IWGRP | S_IXGRP
| S_IROTH | S_IWOTH | S_IXOTH);
daemon(0, 0);
while (1) {
system("perl /home/curr-usr.pl");
sleep(5);
}
return 0;
}
這是用來獲取登錄的當前用戶的perl腳本。
#!/usr/bin/perl
my $result;
$result = `whoami`;
open FH, "+>>", "/tmp/log" or die $!;
print FH "$result ";
close (FH);
在C程序上面,我是調用perl腳本在while循環每5秒。 perl腳本使用命令「whoami」來獲取當前登錄的用戶&將其轉儲到/ tmp/log文件中。
我想實現的是,如果user1登錄perl腳本,應該讓我當前用戶爲user1。相反,perl腳本給我root作爲當前用戶,而不管我通過GUI登錄的用戶,因爲我使用root用戶運行C程序的perl腳本&。
任何人都可以請我提供一種機制,通過它C程序可以知道當前用戶通過GUI登錄? 任何幫助,不勝感激。
我不知道從X11子系統你想提取登錄信息...爲什麼不使用電子郵件。 G。一些用於檢測用戶登錄的Linux API? – 2012-07-13 09:03:17
我真正想要的是有X Window&用戶當前登錄的映射。我們如何使用Linux API檢測用戶登錄,當我們在一個用戶中持續運行程序時,我的要求是讓所有用戶登錄在我開始執行程序後到系統。謝謝 – user1439609 2012-07-13 09:37:18