¡¶Unix/LinuxϵÄCurses¿â¿ª·¢Ö¸ÄÏ¡·ÓÚ2003ÄêÓÉÇ廪³ö°æÉç³ö°æ£¬ºÏͬÔÚ2008Äê½áÊø¡£ÕâÊǹúÄÚΨһµÄÒ»±¾¹ØÓÚCurses¿â¿ª·¢Ö¸ÄϵÄͼÊé¡£±¾ÊéÎÞÒâÔٰ棬Òò´ËÌØÒ⹫¿ªÈ«ÊéÄÚÈÝ£¬ËùÓеÄÕ½ڻáÖ𽥷ųö¡£Ï£Íû¶Ô´ó¼ÒÓÐÓᣠ......
ÍøÂç³ÌÐòºÍÆÕͨ³ÌÐò×î´óµÄÇø±ð¾ÍÊÇ,ÍøÂç³ÌÐòÊÇÓÉÁ½²¿·Ö×é³ÉµÄ--server/client.Ò»°ãÇé¿öÏÂ,ÊÇÏÈÔËÐÐserver¶ËÉϵijÌÐò,È»ºóµÈ´ýclient¶ËÉϵijÌÐòÔËÐв¢½¨Á¢Á¬½Ó,server¶ËÉϵijÌÐòÔÚÒ»¸ö¶Ë¿Ú¼àÌý,µÈ´ýclient¶Ë·¢À´µÄÇëÇó.
int socket(int domain,int type,int protocol)
domain:˵Ã÷ͨѶ³ÌÐòËùÔÚÖ÷»úËù²ÉÓõÄͨѶÐÒéÀà(AF_INETºÍAF_UNIXµÈ);AF_UNIXÖ»ÄÜÓÃÓÚµ¥Ò»µÄUNIXϵͳ½ø³Ì¼äͨѶ,AF_INETÊÇÕë¶ÔinternetµÄ,¿ÉÒÔÓÃÓÚÔ¶³ÌÖ÷»ú¼äµÄͨѶ;
type:ÍøÂç³ÌÐòËù²ÉÈ¡µÄͨѶÐÒé(SOCK_STREAMºÍSOCK_DGRAM);
protocl:Ëù²ÉÈ¡µÄÐÒé,Ò»°ãÉèÖÃΪ0¾Í¿ÉÒÔÁË,Ö÷»ú»á×Ô¶¯Ñ¡ÔñºÏÊʵÄÐÒé.
int bind(int sockfd,struct sockaddr * myaddr,int addrlen)
sockfd:ÊÇsocketµÄ·µ»ØµÄÎļþÃèÊö·û,ÓÃÓÚ¼àÌýµÄsocket;
addrlen:ÊÇsockaddr½á¹¹µÄ³¤¶È;
myaddr:ÊÇÒ»¸öÖ¸ÏòsockaddrµÄ½á¹¹ÌåµÄÖ¸Õë;
¶ÔÓÚsockaddr½á¹¹ÌåµÄ¶¨Òå:
struct sockaddr
{
unsigned short as_family;
char as_data[14];
}
ÓÉÓÚϵͳµÄ¼æÈÝÐÔ,ÓÃÁíÍâÒ»¸ö½á¹¹ÌåÌæ´ú,sockaddr_in:
struct sockaddr_in
{
unsigned short sin_family;
unsigned short ......
zieckey £¨zieckey£Àyahoo.com.cn£©
Ị̈߳¨thread£©¼¼ÊõÔçÔÚ60Äê´ú¾Í±»Ìá³ö£¬µ«ÕæÕýÓ¦ÓöàÏ̵߳½²Ù×÷ϵͳÖÐÈ¥£¬ÊÇÔÚ80Äê´úÖÐÆÚ£¬solarisÊÇÕâ·½ÃæµÄٮٮÕß¡£´«Í³µÄUnixÒ²Ö§³ÖÏ̵߳ĸÅÄµ«ÊÇÔÚÒ»¸ö½ø³Ì£¨process£©ÖÐÖ»ÔÊÐíÓÐÒ»¸öỊ̈߳¬ÕâÑù¶àÏ߳̾ÍÒâζ×Å¶à½ø³Ì¡£
ÏÖÔÚ£¬¶àÏ̼߳¼ÊõÒѾ±»Ðí¶à²Ù×÷ϵͳËùÖ§³Ö£¬°üÀ¨Windows/NT£¬µ±È»£¬Ò²°üÀ¨Linux¡£
¡¡¡¡ÎªÊ²Ã´ÓÐÁ˽ø³ÌµÄ¸ÅÄîºó£¬»¹ÒªÔÙÒýÈëÏß³ÌÄØ£¿Ê¹ÓöàÏ̵߳½µ×ÓÐÄÄЩºÃ´¦£¿Ê²Ã´µÄϵͳӦ¸ÃÑ¡ÓöàỊ̈߳¿ÎÒÃÇÊ×ÏȱØÐë»Ø´ðÕâЩÎÊÌâ¡£
¡¡¡¡Ê¹ÓöàÏ̵߳ÄÀíÓÉÖ®Ò»ÊǺͽø³ÌÏà±È£¬ËüÊÇÒ»Öַdz£"½Ú¼ó"µÄ¶àÈÎÎñ²Ù×÷·½Ê½¡£ÎÒÃÇÖªµÀ£¬ÔÚLinuxϵͳÏ£¬Æô¶¯Ò»¸öеĽø³Ì±ØÐë·ÖÅ䏸Ëü¶ÀÁ¢µÄµØÖ·¿Õ¼ä£¬½¨Á¢ÖÚ¶àµÄÊý¾Ý±íÀ´Î¬»¤ËüµÄ´úÂë¶Î¡¢¶ÑÕ»¶ÎºÍÊý¾Ý¶Î£¬ÕâÊÇÒ»ÖÖ"°º¹ó"µÄ¶àÈÎÎñ¹¤×÷·½Ê½¡£¶øÔËÐÐÓÚÒ»¸ö½ø³ÌÖеĶà¸öỊ̈߳¬ËüÃDZ˴ËÖ®¼äʹÓÃÏàͬµÄµØÖ·¿Õ¼ä£¬¹²Ïí´ó²¿·ÖÊý¾Ý£¬Æô¶¯Ò»¸öÏß³ÌËù»¨·ÑµÄ¿Õ¼äԶԶСÓÚÆô¶¯Ò»¸ö½ø³ÌËù»¨·ÑµÄ¿Õ¼ä£¬¶øÇÒ£¬Ï̼߳ä±Ë´ËÇл»ËùÐèµÄʱ¼äҲԶԶСÓÚ½ø³Ì¼äÇл»ËùÐèÒªµÄʱ¼ä¡£¾Ýͳ¼Æ£¬×ܵÄ˵À´£¬Ò»¸ö½ø³ÌµÄ¿ªÏú´óÔ¼ÊÇÒ»¸öÏ߳̿ªÏúµÄ30±¶×óÓÒ£¬µ±È»£¬ÔÚ¾ßÌåµÄϵͳÉÏ£ ......
2¡¢Ï̵߳ÄÖÕÖ¹
Èç¹û½ø³ÌÖÐÈκÎÒ»¸öÏß³ÌÖе÷ÓÃexit£¬_Exit,»òÕßÊÇ_exit£¬ÄÇôÕû¸ö½ø³Ì¾Í»áÖÕÖ¹£¬
Óë´ËÀàËÆ£¬Èç¹ûÐźŵÄĬÈϵ͝×÷ÊÇÖÕÖ¹½ø³Ì£¬ÄÇô£¬°Ñ¸ÃÐźŷ¢Ë͵½Ï̻߳áÖÕÖ¹½ø³Ì¡£
Ï̵߳ÄÕý³£Í˳öµÄ·½Ê½£º
(1) Ïß³ÌÖ»ÊÇ´ÓÆô¶¯Àý³ÌÖзµ»Ø£¬·µ»ØÖµÊÇÏß³ÌÖеÄÍ˳öÂë
(2) Ï߳̿ÉÒÔ±»ÁíÒ»¸ö½ø³Ì½øÐÐÖÕÖ¹
(3) Ïß³Ì×Ô¼ºµ÷ÓÃpthread_exitº¯Êý
Á½¸öÖØÒªµÄº¯ÊýÔÐÍ£º
#include <pthread.h>
void pthread_exit(void *rval_ptr);
/*rval_ptr Ïß³ÌÍ˳ö·µ»ØµÄÖ¸Õë*/
int pthread_join(pthread_t thread,void **rval_ptr);
/*³É¹¦½áÊø½ø³ÌΪ0,·ñÔòΪ´íÎó±àÂë*/
Àý³Ì6
³ÌÐòÄ¿µÄ£ºÏß³ÌÕý³£Í˳ö£¬½ÓÊÜÏß³ÌÍ˳öµÄ·µ»ØÂë
³ÌÐòÃû³Æ£ºpthread_exit.c
/********************************************************************************************
** Name:pthread_exit.c
......
3¡¢Ï̱߳êʶ
º¯ÊýÔÐÍ£º
#include <pthread.h>
pthread_t pthread_self(void);
pid_t getpid(void);
getpid()ÓÃÀ´È¡µÃĿǰ½ø³ÌµÄ½ø³Ìʶ±ðÂë,º¯Êý˵Ã÷
Àý³Ì8
³ÌÐòÄ¿µÄ£ºÊµÏÖÔÚн¨Á¢µÄÏß³ÌÖдòÓ¡¸ÃÏ̵߳ÄidºÍ½ø³Ìid
³ÌÐòÃû³Æ£ºpthread_id.c
/********************************************************************************************
** Name:pthread_id.c
** Used to study the multithread programming in Linux OS.
** Showing how to get the thread's tid and the process's pid.
** Author:zeickey
** Date:2006/9/16
** Copyright (c) 2006,All Rights Reserved!
*********************************************************************************************/
#include <stdio.h>
#include <pthread.h>
#include <unistd ......
º¯ÊýÔÐÍ£º
#include <pthread.h>
void pthread_cleanup_push(void (*rtn)(void *),void *arg);
º¯ÊýrtnÊÇÇåÀíº¯Êý£¬argÊǵ÷ÓòÎÊý
void pthread_cleanup_pop(int execute);
ÔÚÇ°Ãæ½²¹ýÏ̵߳ÄÖÕÖ¹·½Ê½£¬ÊÇÕý³£ÖÕÖ¹»¹ÊÇ·ÇÕý³£ÖÕÖ¹£¬¶¼»á´æÔÚÒ»¸ö×ÊÔ´ÊͷŵÄÎÊÌ⣬ÔÚposixÖÐÌṩÁËÒ»×飬¾ÍÊÇÎÒÃÇÉÏÃæ¿´µÄº¯Êý½øÐÐÏß³ÌÍ˳öµÄ´¦Àíº¯Êý£¬ÓÐЩÏñÔÚ½ø³ÌÖеÄatexitº¯Êý¡£Êͷŵķ½Ê½ÊÇÖ¸pthread_cleanup_pushµÄµ÷Óõ㵽pthread_cleanup_popÖ®¼ä³ÌÐò¶Î½øÐÐÖÕÖ¹¡£
pthread_cleanup_push()/pthread_cleanup_pop²ÉÓÃÏÈÈëºó³öµÄ·½Ê½µÄÕ»µÄ¹ÜÀí·½Ê½£¬void *rtn(void *),ÔÚÖ´ÐÐpthread_cleanup_push()ʱѹÈ뺯ÊýÕ»£¬¶à´ÎÖ´ÐÐpthread_cleanup_push()ÐγÉÒ»¸öº¯ÊýÁ´£¬ÔÚÖ´ÐÐÕâ¸öº¯ÊýÁ´µÄʱºò»áÒÔ·´·½Ïòµ¯³ö£¬¼´ÏÈÈëºó³ö¡£execute²ÎÊý±íʶ£¬ÊÇ·ñÖ´Ðе¯³öÇåÀíº¯Êý£¬µ±execute=0ʱ²»½øÐе¯³öÇåÀíº¯Êý£¬·ÇÁãµÄʱºòµ¯³ö´¦Àíº¯Êý¡£
Àý³Ì9
³ÌÐòÄ¿µÄ£ºÊµÏÖÔÚÕý³£½áÊøÏ̵߳Äʱºò£¬½øÐк¯Êý´¦Àí
³ÌÐòÃû³Æ£ºpthread_cle ......