Could connect GVFS session bus from a root privilege program?
- From: danny <tornadory 163 com>
- To: gvfs-list gnome org
- Subject: Could connect GVFS session bus from a root privilege program?
- Date: Thu, 13 May 2010 14:47:32 +0800 (CST)
Hi All,
I have a problem that I need get the information from GVFS(I thought it is), but the program run as root users.
I use g_volume_monitor_get() to get a monitor for the removable devices and do something while removable devices connect or disconnect, it works normally while run as a plain user but failed when run as the root user.
How could I do? Hope for someone give me any clue, and thanks in advance.
Below is my test program.
#include <gio/gio.h>
#include <gtk/gtk.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
static void print_drive_info(GDrive *drive)
{
gchar *name;
name = g_drive_get_name(drive);
g_print("\tname: %s\n",
name ? name : "(null)");
g_free(name);
}
static void on_drive_changed(GVolumeMonitor *volume_monitor, GDrive *drive)
{
g_print("Drive changed:\n");
print_drive_info(drive);
}
static void on_drive_connected(GVolumeMonitor *volume_monitor, GDrive *drive)
{
g_print("Drive connected:\n");
print_drive_info(drive);
}
static void on_drive_disconnected(GVolumeMonitor *volume_monitor, GDrive *drive)
{
g_print("Drive disconnected:\n");
print_drive_info(drive);
}
int main(int argc, char *argv[])
{
GVolumeMonitor *monitor;
gtk_init(&argc, &argv);
#if 0
/*the following is my test by setting euid */
int old_uid = getuid();
int old_euid = geteuid();
printf("uid is %d \n euid is %d \n",getuid(), geteuid() );
//if (setuid(500) == -1)
if (seteuid(500) == -1)
{
printf ("seteuid : %s \n", strerror(errno));
return -1;
}
printf("uid is %d \n euid is %d \n",getuid(), geteuid() );
#endif
monitor = g_volume_monitor_get();
g_signal_connect(monitor, "drive-changed", G_CALLBACK(on_drive_changed), NULL);
g_signal_connect(monitor, "drive-connected", G_CALLBACK(on_drive_connected), NULL);
g_signal_connect(monitor, "drive-disconnected", G_CALLBACK(on_drive_disconnected), NULL);
gtk_main();
return 0;
}
网易为中小企业免费提供企业邮箱(自主域名)
[Date Prev][
Date Next] [Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]