´ó¼Ò¶¼ÖªµÀlinuxµÄÆÕͨÓû§²»ÄÜÖ±½Ó¹Ø»ú£¬ÎÒÏëд¸ö³ÌÐò£¬ÈóÌÐò²»ÌáȨ¾Í¿ÉÒԹػú£¬ÕÒ°¡ÕÒ°¡£¬×îºó·¢ÏÖÖ»ÄÜͨ¹ýDBUS·¢ËÍÇëÇó¸øÓÐȨÏ޵ijÌÐò£¬ÈÃËû°ïæ¹Ø»ú£¬ÓÚÊÇÎÒ¾ÍÔÚDBUSÖÐÕÒ£¬·¢ÏÖDBUSµÄsession busÖÐÓиöorg.freedesktop.PowerManagement£¬ÏÂÃæÓÖÓиö/org/freedesktop/PowerManagement£¬ÔÚËûÌṩµÄ½Ó¿ÚÀïÓиöShutdown·½·¨£¬ÇëÎÊÎÒÔõô²ÅÄܵ÷ÓÃËû¹Ø»ú£¿
ÎÒÊÇÖ±½ÓÓÃDBUSµÄ»ù±¾º¯Êý£¬Ã»ÓÃglib£¬ÒòΪÎҾ͵÷ÓÃÕâôһ¸öº¯Êý£¬glib·â×°µÄdbusÆäʵҲºÜÄѶ®£¬Ã»¿´¶®¡«¡«¡«¡«
ÕâÊÇÎÒÕÕÍøÉÏÀý×ӸĵĴúÂ룬µ«ÊÇÔËÐк󲻹ػú£¬555555
#include <dbus/dbus.h>
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv)
{
DBusMessage* msg = NULL;
DBusMessageIter args;
DBusConnection* conn;
DBusError err;
DBusPendingCall* pending;
int ret;
bool stat;
dbus_uint32_t level;
char* param = "Shutdown";
printf("Calling remote method with %s\n",param);
//³õʼ»¯´íÎó±äÁ¿
dbus_error_init(&err);
//Á¬½Óµ½ÏµÍ³×ÜÏß²¢¼ì²é´íÎó
conn=dbus_bus_get(DBUS_BUS_SESSION,&err);
if(dbus_error_is_set(&err))
{
fprintf(stderr,"Coonection Error(%s)\n",err.message);
dbus_error_free(&err);
}
if(conn==NULL)
{
exit(1);
ÎÒĿǰÔÚ±¾µØµÄlinuxÉÏдÁËÒ»¸öswingµÄ½çÃæ£¬Ïëͨ¹ýÕâ¸ö½çÃæÀ´¿ØÖÆÆäËüµçÄÔµÄlinuxÖØÆô¡£
ÎÒÖªµÀÓÃRuntime.getRuntime().exec("shutdown -r");¿ÉÒÔ¿ØÖƱ¾»úLinuxÖØÆô£¬µ«ÊÇÔõô¿ØÖÆÔ¶³ÌµÄlinuxÖØÆôÄØ£¿ ......
ÎÒҪд¸ö·þÎñ¶Ë¡£ ÒªÇóͬʱ֧³Öwindows ºÍ linux Á½¸ö ϵͳ¡£ Ò²¾ÍÊÇҪдһ¸ö dllºÍÒ»¸öso Îļþ¡£ÓÉÓÚÎÒÒ»Ö±¶¼ÊÇÔÚwindsÏÂд³ÌÐò¡£linuxµÄ»¹²»»á¡£ Ïò´ó¼Ò×Éѯ ͬʱ Ö§³Ö dllºÍso Ó¦¸ÃÔõôд¡£
Óô¿c/c ......