LINUX SOCKET AIO ÎÊÌâ
дÁË´úÂ룬ʹÓÃace_proactor, ÔÀ´windowsÅܵ÷dz£Æ¯ÁÁ£¬À´µ½linux¾Íʱ²»Ê±²»¹¤×÷£¬È»ºó¼Óasynce_connectorºó£¬·¢ÏÖÍê³É²»Äܹ¤×÷£¬async_stream_writeºó£¬·¢ÏÖ¿¨ÔÚÄÇÀ¸ù±¾·¢²»³öÈ¥£¬¶à´Î·ÖÎöºó£¬·¢ÏÖ£¬ÔÀ´Ö®Ç°ÓÐaio_readûÓÐÍê³É£¬aio_writeµÄÇëÇó¾ÍblockÄÇÀïÁË£¬writeÕâ¸ö²Ù×÷¾¹È»Ò»¶¨ÒªµÈǰµÄaio_readÍê³ÉÖ®ºó£¬²Å¿ÉÒÔÖ´ÐС£ Ö¤¾ÝÈçÏÂ:
1.¿¨×¡µÄaio_write »á³ÉÉÏÍê³É£¬Èç¹ûsocket±»¶Ô·½¹Ø±Õ¡£
2.ÔÚaio_read֮ǰÉèÖÃsocketµÄģʽΪnonblocking, һʱwrite²Ù×÷³öÏÖ£¬aio_read ÂíÉÏÍê³É£¬²¢·µ»Ø´íÎóÂë EAGAIN£¬È»ºóaio_writeµÄÇëÇóÒ²¸øÍê³ÉÁË¡£
3.socketµÄģʽÔÚaceºÍIBMÓйصÄaioÎĵµÖиøÇ¿µ÷£¬must be ing blocking mode.
Ìì°¡£¡
³¢ÊÔÁËÔÚaio_write֮ǰÈç¹ûÓжÁ²Ù×÷£¬Ê¹ÓÃaio_cancel½øÐÐcancel²Ù×÷£¬²»ÐУ¬ÓÚÊÇÉèÖÃÁËnonblockingģʽȻºó¶øcancel£¬»¹ÊÇûÓÐÈκη´Ó¦¡£
¿´À´LINUXµÄAIOʵÏÖÕæÊǹ»Àõ쬶ÔÓÚSOCKET²Ù×÷µÄʵÏÖÍêȫʧ°Ü£¡
¼ÙÉèÒÔÏÂÇéÐΣº
1.server ¹ã²¥Êý¾Ý¸ø¿Í»§¶Ë£¨µ÷ÓÃaio_write)£¬²¢ÇÒ·¢ËÍÁËÒ»ÌõÆÚÍûµÃµ½¿Í»§¶ËÏìÓ¦µÄÖ¸Áî(aio_read)£¬½á¹û¿Í»§¶Ë³¤ÆÚûÓÐÏìÓ¦£¬ÕâʱÎÒÏëÔÙ·¢Ò»Ìõ֪ͨÊý¾Ý¸ø¿Í»§¶Ë(µ÷ÓÃaio_write)£¬Õâ¸ö·¢Ë͵ÄÇëÇó¾Í¸øÄÚºËÀïblockסÔÚÄÇÀһֱ·¢²»³öÈ¥£¬ÒòΪËüÒªµÈÇ°ÃæÒ»¸öaio_readÍê³É, Ö±µ½¿Í»§¶ËÏìÓ¦ÁË»òÕßÊǶÏÏßÁË£¬ÕâµÚ¶þ¸öaio_write²Å»áÍê³É¡£
ÓôÃÆ°É¡£²¢ÇÒÄãÎÞ·¨È¡ÏûÕâÖÖ״̬£¬Õâ¸ösocket ¾ÍÍ£ÔÚÄÇÀïÁË¡£¡£¡£¡£
¶ÔÓÚserver¶ËÕâ¸ö»¹ºÃ¡£
Èç¹ûÄãµÄserver¶ËÓÖÐèÒªºÍÆäËüserver×÷ÁªÏµµÄʱºò£¬Äã¾ÍÂé·³ÁË£¬ÍêÈ«²»¿ÉÔ¤²â¡£
Ïà¹ØÎĵµ£º
1¡¢ÒýÑÔ
ÔÚlinuxϵͳÏ£¬Èç¹ûÄãÏÂÔØ²¢°²×°ÁËÓ¦ÓóÌÐò£¬ºÜÓпÉÄÜÔÚ¼üÈëËüµÄÃû³ÆÊ±³öÏÖ“command not found”µÄÌáʾÄÚÈÝ¡£Èç¹ûÿ´Î¶¼µ½°²×°Ä¿±êÎļþ¼ÐÄÚ£¬ÕÒµ½¿ÉÖ´ÐÐÎļþÀ´½øÐвÙ×÷¾ÍÌ«·±ËöÁË¡£ÕâÉæ¼°µ½»·¾³±äÁ¿PATHµÄÉèÖÃÎÊÌ⣬¶øPATHµÄÉèÖÃÒ²ÊÇÔÚlinux϶¨ÖÆ»·¾³±äÁ¿µÄÒ»¸ö×é³É²¿·Ö¡£±¾ÎÄ»ùÓ ......
ǶÈëʽLinuxÆô¶¯·ÖΪÁ½¸ö²¿·Ö£¬ÏµÍ³Òýµ¼ÓëLinuxÆô¶¯¡£ÏµÍ³Òýµ¼½«Íê³ÉLinux×°ÈëÄÚ´æÇ°£¬³õʼ»¯CPUºÍÏà¹ØI/OÉ豸£¬²¢½«Linuxµ÷ÈëÄÚ´æµÄ¹¤×÷¡£ÏµÍ³Òýµ¼Ö÷ÒªÓÉBootLoaderʵÏÖ¡£ÔÚBootLoader½«LinuxÄں˵÷ÈëÄÚ´æÖ®ºó£¬½«È¨Á¦½»¸øLinuxKernel£¬½øÈëLinuxµÄÆô¶¯²¿·Ö¡£ÒÔÏÂÏêϸ·ÖÎöÆô¶¯µÄ¹ý³ÌÓëʹÓõÄÎļþ¡£
Ò»¡¢ÏµÍ³Òýµ¼ÓëBootLoa ......
Linux
ÏÂÉèÖö˿ÚȨÏÞµÄϵͳµ÷ÓÃÓÐÁ½¸ö£º
ioperm
ºÍ
iopl
¡£
Ò»¡¢
ioperm
ºÍ
iopl
½éÉÜ¡£
1.ioperm
¹¦ÄÜÃèÊö£º
Ϊµ÷Óýø³ÌÉèÖÃ
I/O
¶Ë¿Ú·ÃÎÊȨÄÜ¡£
ioperm
µÄʹÓÃÐèÒª¾ßÓг¬¼¶Óû§µÄȨÏÞ£¬Ö»ÓеͶ˵Ä
[0-0x3ff] I/O
¶Ë¿Ú¿É±»ÉèÖã¬ÒªÏëÖ¸¶¨¸ü¶à¶Ë¿ÚµÄȨÄÜ£¬¿ÉʹÓÃ
iopl
º¯Êý¡£ÕâÒ»µ÷ÓÃÖ»¿ÉÓÃÓ ......
linux²Ù×÷ϵͳÏÂsystem () º¯ÊýÏê½â
¡¡¡¡£¨Ö´ÐÐshell ÃüÁ
¡¡¡¡Ïà¹Øº¯Êý
¡¡¡¡fork£¬execve£¬waitpid£¬popen
¡¡¡¡±íÍ·Îļþ
¡¡¡¡££include<stdlib.h>
¡¡¡¡¶¨Ò庯Êý
¡¡¡¡int system(const char * string);
¡¡¡¡º¯Êý˵Ã÷
¡¡¡¡system()»áµ÷ÓÃfork()²úÉú×Ó½ø³Ì£¬ÓÉ×Ó½ø³ÌÀ´µ÷ÓÃ/bin/sh-c stringÀ´Ö´ÐвÎÊýstring ......
ÔÚLinuxÏÂʹÓÃGtk+ʵÏÖ×î¼òµ¥µÄGUI´°¿Ú£¬Ô´´úÂëÈçÏ£º
//SimpleGui.c
#include <gtk/gtk.h>
int main(int argc,char *argv[])
{
//¶¨ÒåÒ»¸öwidget(Gtk+¹¹¼þ)£¬ÕâÀﶨÒåµÄÊÇÒ»¸ö´°¿Ú¹¹¼þ
GtkWidget *wnd;
//Gtk+2.0µÄ³õʼ»¯ÃüÁîÐвÎÊý£¬Ã¿Ò»¸öGtk+³ÌÐò¶¼ÒªÓÐÕâ¾ä»°
gtk_init(& ......