Ò׽ؽØÍ¼Èí¼þ¡¢µ¥Îļþ¡¢Ãâ°²×°¡¢´¿ÂÌÉ«¡¢½ö160KB
ÈÈÃűêÇ©£º c c# c++ asp asp.net linux php jsp java vb Python Ruby mysql sql access Sqlite sqlserver delphi javascript Oracle ajax wap mssql html css flash flex dreamweaver xml
 ×îÐÂÎÄÕ :

linux api±Ê¼Ç£¨6£©£ºỊ̈߳¨ËÄ£© Ïß³Ì˽ÓÐÊý¾Ý

±¾ÎĽ«ÃèÊöÏ̵߳ÄÒ»¸ö±È½ÏÖØÒªµÄÒ»·½Ã棺Ïß³Ì˽ÓÐÊý¾Ý£¬ÈçÏ´úÂ룺
#include <pthread.h>
#include <unistd.h>
#include <stdio.h>
pthread_key_t kKey = 0;
void * ThreadProc(void* arg)
{
char* a = (char*)(arg);
sleep(2);
pthread_setspecific(kKey, a);
sleep(1);
char* str = (char*)pthread_getspecific(kKey);
printf("thread: %s\n", str);
}
int main()
{
pthread_t thread_handle1 = 0;
pthread_t thread_handle2 = 0;
char a[] = {"i am A"};
char b[] = {"i am B"};
pthread_create(&thread_handle1, NULL, ThreadProc, a);
pthread_key_create(&kKey, NULL);
pthread_create(&thread_handle2, NULL, ThreadProc, b);
void* out1 = NULL;
void* out2 = NULL;
pthread_join(thread_handle1, &out1);
pthread_join(thread_handle2, &out2);
return 0;
}
ʹÓÃÏß³Ì˽ÓÐÊý¾ÝµÄ²½Ö裺
1£©Ê¹ÓÃpthread_key_create·ÖÅäÒ»¸öÏß³Ì˽ÓÐÊý¾ÝµÄke ......

LinuxÄں˽ø³Ìµ÷¶ÈÒÔ¼°¶¨Ê±Æ÷ʵÏÖ»úÖÆ(ת)

ÕªÒª¡¿±¾Îļòµ¥½éÉÜÁËÈÎÎñµÄ¸÷ÖÖ״̬ºÍPCBµÄ½á¹¹£¬·ÖÎöÁ˼¸ÖÖÈÎÎñµ÷¶È²ßÂÔ£¬Ïê½âÁËschedule£¬²¢·ÖÎöÁËÈçºÎ½øÐнø³ÌÉÏÏÂÎÄÇл»£»Ëæºó·ÖÎöÁË2.6ÄÚºËÈçºÎÓÅ»¯ÁËÈÎÎñµ÷¶ÈËã·¨£»×îºó½éÉÜÁËÄں˶¨Ê±Æ÷µÄʵÏÖ»úÖÆºÍϵͳµ÷ÓõÄʵÏÖ¹ý³Ì¡£
¡¾¹Ø¼ü´Ê¡¿½ø³Ì¿ØÖÆ¿éPCB£¬RR£¬FIFO£¬Äں˵÷¶ÈËã·¨£¬ÈÎÎñÇл»£¬Äں˶¨Ê±£¬timer£¬ÈíÖжÏsoftirq£¬ÏµÍ³µ÷ÓÃ
Ò»¡¢2.6°æÒÔǰÄں˽ø³Ìµ÷¶È»úÖÆ¼ò½é... 1
1¡¢½ø³Ì¿ØÖÆ¿éÊý¾Ý½á¹¹... 1
2¡¢½ø³Ìµ÷¶È... 2
3¡¢½ø³ÌÉÏÏÂÎÄÇл»... 5
¶þ¡¢2.6°æÄں˶Խø³Ìµ÷¶ÈµÄÓÅ»¯... 7
1¡¢Ðµ÷¶ÈËã·¨¼ò½é... 7
2¡¢2.6°æÐµ÷¶ÈËã·¨·ÖÎö... 8
3¡¢2.6°æÐµ÷¶ÈËã·¨Á÷³Ìͼ... 11
Èý¡¢ÄÚºËÖжϼ°¶¨Ê±Æ÷ʵÏÖ·ÖÎö... 11
ËÄ¡¢ÏµÍ³µ÷ÓõÄʵÏÖ¹ý³Ì... 14
²Î¿¼×ÊÁÏ£º... 14
Ò»¡¢2.6°æÒÔǰÄں˽ø³Ìµ÷¶È»úÖÆ¼ò½é
LinuxµÄ½ø³Ì¹ÜÀíÓɽø³Ì¿ØÖƿ顢½ø³Ìµ÷¶È¡¢Öжϴ¦Àí¡¢ÈÎÎñ¶ÓÁС¢¶¨Ê±Æ÷¡¢bottom half¶ÓÁС¢ÏµÍ³µ÷Óᢽø³ÌͨÐŵȵȲ¿·Ö×é³É¡£
½ø³Ìµ÷Ó÷ÖΪʵʱ½ø³Ìµ÷¶ÈºÍ·Çʵʱ½ø³Ìµ÷¶ÈÁ½ÖÖ¡£Ç°Õßµ÷¶Èʱ£¬¿ÉÒÔ²ÉÓûùÓÚ¶¯Ì¬ÓÅÏȼ¶µÄÂÖת·¨£¨RR£©£¬Ò²¿ÉÒÔ²ÉÓÃÏȽøÏȳöËã·¨£¨FIFO£©¡£ºóÕßµ÷¶Èʱ£¬Ò»ÂɲÉÓûùÓÚ¶¯Ì¬ÓÅÏȼ¶µÄÂÖת·¨¡£Ä³¸ö½ø³Ì²ÉÓúÎÖÖµ÷¶ÈËã·¨Óɸýø³ÌµÄ½ø³Ì¿ØÖÆ¿éÖ ......

ǶÈëʽLinuxϵͳCGI³ÌÐòÉè¼Æ¼¼Êõ

ǶÈëʽLinuxϵͳCGI³ÌÐòÉè¼Æ¼¼Êõ
ÕªÒª£ºÔÚÏêϸ½éÉÜÒ»ÖÖǶÈëʽWeb·þÎñÆ÷BOAµÄʵÏÖÓëÅäÖ÷½·¨µÄ»ù´¡ÉÏ£¬ÒÔÒ»¸öWebÔÚÏßÔ¶³Ì¼à¿ØGPIO£¨Í¨ÓÃÊäÈë/Êä³ö£©µÄ³ÌÐòΪʵÀý£¬½éÉÜǶÈëʽLinuxϵͳÏÂCPU³ÌÐòÉè¼Æ¼¼Êõ¡£
   ¹Ø¼ü´Ê£ºÇ¶ÈëʽϵͳLinux BOA CGI GPIO
1 ¸ÅÊö
Ëæ×Å»¥ÁªÍøÓ¦ÓÃµÄÆÕ¼°£¬Ô½À´Ô½¶àµÄÐÅÏ¢»¯²úÆ·ÐèÒª½ÓÈ뻥ÁªÍøÍ¨¹ýWebÒ³Ãæ½øÐÐÔ¶³Ì·ÃÎÊ¡£Ç¶ÈëʽWebϵͳÌṩÁËÒ»ÖÖ¾­¼Ã¡¢ÊµÓõĻ¥ÁªÍøÇ¶Èëʽ½ÓÈë·½°¸¡£ÕâÀï½áºÏÒ»ÖÖǶÈëʽWeb Server BOAÀ´½éÉÜǶÈëʽLinuxϵͳϵÄCGI³ÌÐòÉè¼Æ¼¼Êõ¡£
2 Web Server BOAµÄʵÏÖÓëÅäÖÃ
2.1 uClinuxÏ£¬Ö÷ÒªÓÐÈý¸öWeb Server:HTTPD¡¢THTTPDºÍBOA¡£HTTPDÊÇ×î¼òµ¥µÄÒ»¸öWeb Server,ËüµÄ¹¦ÄÜ×îÈõ£¬²»Ö§³ÖÈÏÖ¤£¬²»Ö§³ÖCGI¡£THTTPDºÍBOA¶¼Ö§³ÖÈÏÖ¤¡¢CGIµÈ£¬¹¦Äܶ¼±È½ÏÈ«¡£BOAÊÇÒ»¸öµ¥ÈÎÎñµÄСÐÍHTTP·þÎñÆ÷£¬Ô´´úÂ뿪·Å¡¢ÐÔÄÜÓÅÐã£¬ÌØ±ðÊʺÏÓ¦ÓÃÔÚǶÈëʽϵͳÖС£Ä¿Ç°µÄuClinuxµÄ´úÂëÖÐÒѾ­°üº¬BOAµÄÔ´´úÂë¡£ÔÚuClinuxÏÂʵÏÖBOA£¬Ö»ÐèÒª¶ÔBOA×öһЩÅäÖúÍÐ޸ġ£ÒÔÏÂÊÇÅäÖõĹý³Ì¡£
£¨1£©±àÒëBOAµ½ÄÚºË
Ê×ÏÈ£¬ÐèÒª°ÑBOA±àÒëµ½Äںˣ¬¼´Ö´ÐÐmake menuconfig£¬ÔÚÓ¦ÓóÌÐòÑ¡µ¥ÖÐnetwork applicationÏîÏÂÃæÑ¡Ôñboa¡£¸Ã²Ù×÷ÐèÒªÖØÐ±àÒëÄںˡ ......

Linux ½ø³Ìµ÷¶È»úÖÆ

ÓÅÏÈȨֻÊǵ÷¶ÈËã·¨¿¼ÂǵÄÒ»¸ö·½Ãæ
½ø³Ìµ÷¶ÈÒÀ¾Ý
µ÷¶È³ÌÐòÔËÐÐʱ£¬ÒªÔÚËùÓпÉÔËÐÐ״̬µÄ½ø³ÌÖÐÑ¡Ôñ×îÖµµÃÔËÐеĽø³ÌͶÈëÔËÐС£Ñ¡Ôñ½ø³ÌµÄÒÀ¾ÝÊÇÊ²Ã´ÄØ£¿ÔÚÿ¸ö½ø³ÌµÄtask_struct½á¹¹ÖÐÓÐÒÔÏÂËÄÏpolicy¡¢priority¡¢counter¡¢rt_priority¡£ÕâËÄÏîÊÇÑ¡Ôñ½ø³ÌµÄÒÀ¾Ý¡£ÆäÖУ¬policyÊǽø³ÌµÄµ÷¶È²ßÂÔ£¬ÓÃÀ´Çø·Öʵʱ½ø³ÌºÍÆÕͨ½ø³Ì£¬ÊµÊ±½ø³ÌÓÅÏÈÓÚÆÕͨ½ø³ÌÔËÐУ»priorityÊǽø³Ì(°üÀ¨ÊµÊ±ºÍÆÕͨ)µÄ¾²Ì¬ÓÅÏȼ¶£»counterÊǽø³ÌÊ£ÓàµÄʱ¼äƬ£¬ËüµÄÆðʼֵ¾ÍÊÇpriorityµÄÖµ£»ÓÉÓÚcounterÔÚºóÃæ¼ÆËãÒ»¸ö´¦ÓÚ¿ÉÔËÐÐ״̬µÄ½ø³ÌÖµµÃÔËÐеij̶ÈgoodnessʱÆðÖØÒª×÷Óã¬Òò´Ë£¬counterÒ²¿ÉÒÔ¿´×÷Êǽø³ÌµÄ¶¯Ì¬ÓÅÏȼ¶¡£rt_priorityÊÇʵʱ½ø³ÌÌØÓеģ¬ÓÃÓÚʵʱ½ø³Ì¼äµÄÑ¡Ôñ¡£
LinuxÓú¯Êýgoodness()À´ºâÁ¿Ò»¸ö´¦ÓÚ¿ÉÔËÐÐ״̬µÄ½ø³ÌÖµµÃÔËÐеij̶ȡ£¸Ãº¯Êý×ÛºÏÁËÒÔÉÏÌáµ½µÄËÄÏ»¹½áºÏÁËһЩÆäËûµÄÒòËØ£¬¸øÃ¿¸ö´¦ÓÚ¿ÉÔËÐÐ״̬µÄ½ø³Ì¸³ÓèÒ»¸öȨֵ(weight)£¬µ÷¶È³ÌÐòÒÔÕâ¸öȨֵ×÷ΪѡÔñ½ø³ÌµÄΨһÒÀ¾Ý¡£¹ØÓÚgoodness()µÄÇé¿öÔÚºóÃæ½«»áÏêϸ·ÖÎö¡£
½ø³Ìµ÷¶È²ßÂÔ
µ÷¶È³ÌÐòÔËÐÐʱ,ÒªÔÚËùÓд¦ÓÚ¿ÉÔËÐÐ״̬µÄ½ø³ÌÖ®ÖÐÑ¡Ôñ×îÖµµÃÔËÐеĽø³ÌͶÈëÔËÐС£Ñ¡Ôñ½ø³ÌµÄÒÀ¾ÝÊÇÊ²Ã´ÄØ?ÔÚÿ¸ö½ø³ÌµÄtask_st ......

linux api±Ê¼Ç£¨7£©£ºÏµÍ³µ÷ÓÃÈçºÎ°ÚÍÑÐźŵĸÉÈÅ

ÔÚlinux»·¾³Ï±à³ÌÓÐÒ»¸öºÜÈÃÈËÍ·ÌÛµÄÎÊÌâ¾ÍÊÇÐźŶÔϵͳµ÷ÓõĸÉÈÅ£¬ÔÚϵͳµ÷Óùý³ÌÖÐÈç¹ûÊܵ½ÐźŵĸÉÈÅ£¬
²¿·Öϵͳµ÷ÓûὫerrnoÉèÖóÉEINTR£¬ÎÒÃDz»µÃ²»±àдÏÂÃæµÄ´íÎó´¦Àí´úÂëÀ´·ÀÖ¹ÕâÖÖÇé¿öµÄ·¢Éú£º
syscall:
int ret = syscall(...);
if (ret < 0 && EINTER == errno)
goto syscall;
else if(ret < 0)
...
else
... 
Ò»´ÎÓÖÒ»´ÎµÄ±àдµÄ»°ÕæµÄºÜ·³£¬¶øÇ°¶Ëʱ¼äÎÒÔÚchromeµÄÔ´´úÂëÖÐÕÒµ½µÄÒ»¶Î´úÂëÕýºÃ½â¾öÁËÕâÖÖ³óªµÄ±àÂ룺
#include <fcntl.h>
#include <errno.h>
#include <unistd.h>
#define HANDLE_EINTR(x) ({ \
typeof(x) __eintr_code__; \
do { \
__eintr_code__ = x; \
} while(__eintr_code__ < 0 && EINTR == errno); \
__eintr_code__; \
})
int main()
{
int fd = 0;
char buf[1024];
fd = open("hello world", O_RDWR);
HANDLE_EINTR(read(fd,buf, sizeof(buf)));
close(fd);
return 0;
}
 
µ±È»ÎÒÃÇÒ²²»ÊÇÖ»ÒªÅöµ½ÏµÍ³µ÷ÓþÍʹÓÃHANDLE_ ......

LinuxÃüÁî

Ò»¡¢ ldconfig£º
¡¡¡¡LinuxϵͳÖУ¬ÎªÁËÈö¯Ì¬Á´½Ó¿âΪϵͳËù¹²Ïí£¬»¹ÐèÔËÐж¯Ì¬Á´½Ó¿âµÄ¹ÜÀíÃüÁî——ldconfig.
¡¡¡¡1. ldconfigÃüÁîµÄÓÃ;£ºÖ÷ÒªÊÇÔÚĬÈÏËÑѰĿ¼£¨/libºÍ/usr/lib£©ÒÔ¼°¶¯Ì¬¿âÅäÖÃÎļþ/etc/ld.so.confÄÚËùÁеÄĿ¼Ï£¬ËÑË÷³ö¿É¹²ÏíµÄ¶¯Ì¬Á´½Ó¿â£¨¸ñʽÈçǰ½éÉÜ£¬lib*.so*£©£¬½ø¶ø´´½¨³ö¶¯Ì¬×°Èë³ÌÐò£¨ld.so£©ËùÐèµÄÁ¬½ÓºÍ»º´æÎļþ¡£»º´æÎļþĬÈÏΪ /etc/ld.so.cache£¬´ËÎļþ±£´æÒÑÅźÃÐòµÄ¶¯Ì¬Á´½Ó¿âÃû×ÖÁÐ±í¡£
¡¡¡¡2. ldconfigͨ³£ÔÚϵͳÆô¶¯Ê±ÔËÐУ¬¶øµ±Óû§°²×°ÁËÒ»¸öÐµĶ¯Ì¬Á´½Ó¿âʱ£¬¾ÍÐèÒªÊÖ¹¤ÔËÐÐÕâ¸öÃüÁî¡£
¶þ¡¢ldd
      1¡¢Ê×ÏÈldd²»ÊÇÒ»¸ö¿ÉÖ´ÐгÌÐò£¬¶øÖ»ÊÇÒ»¸öshell½Å±¾
¡¡¡¡2¡¢lddÄܹ»ÏÔʾ¿ÉÖ´ÐÐÄ£¿éµÄdependency£¬ÆäÔ­ÀíÊÇͨ¹ýÉèÖÃһϵÁеĻ·¾³±äÁ¿£¬ÈçÏ£ºLD_TRACE_LOADED_OBJECTS¡¢LD_WARN¡¢LD_BIND_NOW¡¢LD_LIBRARY_VERSION¡¢ LD_VERBOSEµÈ¡£µ±LD_TRACE_LOADED_OBJECTS»·¾³±äÁ¿²»Îª¿Õʱ£¬ÈκοÉÖ´ÐгÌÐòÔÚÔËÐÐʱ£¬Ëü¶¼»áÖ»ÏÔʾģ¿éµÄ dependency£¬¶ø³ÌÐò²¢²»ÕæÕýÖ´ÐС£ ......
×ܼǼÊý:40319; ×ÜÒ³Êý:6720; ÿҳ6 Ìõ; Ê×Ò³ ÉÏÒ»Ò³ [1578] [1579] [1580] [1581] 1582 [1583] [1584] [1585] [1586] [1587]  ÏÂÒ»Ò³ βҳ
© 2009 ej38.com All Rights Reserved. ¹ØÓÚE½¡ÍøÁªÏµÎÒÃÇ | Õ¾µãµØÍ¼ | ¸ÓICP±¸09004571ºÅ