´ó¼Ò¶¼ÖªµÀ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£¬¿ÉÊÇLinuxͼÐνçÃæºÍÃüÁîÐÐÖ®¼äÇл»Óöµ½À§ÄÑ£¬ÔÚÃüÁîÐÐÏÂÊäÈëstartx£¬²»ÊǽøÈëͼÐνçÃæ
¶øÊdzöÏÖ
ÇëÎʸ÷룬ÕâÊÇΪʲô£¿ ¶øÇÒ°´Ctrl+Alt+F7£¬Ò²²»ÄÜÃüÁîÐнøÈëͼÐνçÃæ¡£
¼±¼±¼±
......
Ó¦ÓÃϵͳÊǰ²×°ÔÚ /opt Ŀ¼Ï£¬/opt Ŀ¼ÊÇÊôÓÚ¸ùĿ¼ / ϵġ£ÁíÍâÒ»¸öÎļþϵͳµÄ¹ÒÔØµãÊÇÔÚ/aaaĿ¼Ï£¬¿É·ñ½«/optĿ¼ÏµÄËùÓÐÎļþcopyµ½/aaaĿ¼Ï£¬umount ÔÚ/aaaĿ¼ÏµĹÒÔØµã£¬½«/aaa¸ÄÃû/optĿ¼£¬ÔÙ½«ÔÀ ......