ѧϰ±Ê¼Ç Unix/Linux½ø³Ì¼äͨÐÅ
ÃæÊÔʱһÔٵر»Îʵ½½ø³Ì¼äͨÐŵÄÇé¿ö£¬¶øÎÒµÄÀí½âһֱͣÁôÔÚ¸ÅÄîÉϺÍÃû´ÊÉÏ£¬±ØÐëÒª×öµãʵÑé¼ÓÉîÀí½â¡£
IPC:Interprocess communication¡£ÓÐЩIPCµÄ·½·¨²»½ö¿ÉÒÔÓÃÓÚÏàͬÖ÷»ú£¬Ò²¿ÉÒÔÓÃÓÚ²»Í¬Ö÷»ú£¬ÈçsocketsºÍSTREAMS¡£
¾µäIPCÖ®Ò»£ºpipes(¹ÜµÀ)
,ʹÓÃ×î¹ã·º£¬¾ßÓÐÇ×Ôµ¹ØÏµ
µÄ½ø³Ì¼ä²ÅÄÜʹÓùܵÀ½øÐÐIPC¡£
ʹÓÃÁ˹ܵÀµÄÀý×Ó£ºls -a | grep "jun"
×Ô¼ºµÄ³ÌÐòÖÐʹÓùܵÀµÄ·½·¨£º¸¸½ø³Ì´´½¨pipe£¬È»ºófork×Ó½ø³Ì£¬Õâʱ¸¸×Ó½ø³Ìͨ¹ýpipe½øÐÐͨÐÅÁË¡£
Àý×Ó´úÂ룺(ΪÁËץס֨µã£¬É¾³ýÁË´¦Àí´íÎóµÄ´úÂë)
int main()
{
int fd[2]; //¹ÜµÀÊÇÒ»ÖÖÎļþ£¬ÓÐread¶ËºÍwrite¶Ë£¬ÒªÓõ½Á½¸öfile descriptor
pipe(fd); //´´½¨¹ÜµÀ
pid = fork();
if (pid > 0) { //¸¸½ø³Ì
close(fd[0]); //fd[0]ÊÇread¶Ë£¬fd[1]ÊÇwrite¶Ë£¬ÕâÀï¹Ø±Õread¶Ë¡£close()ÊÇFile I/OµÄAPI¡£
write(fd[1], ”hello pipe\n", 11); //ͨ¹ýwrite¶Ë£¬Ð´ÈëÊý¾Ý¡£write()ÊÇFile I/OµÄAPI¡£
}
else { //×Ó½ø³Ì
close(fd[1]); //¹Ø±Õwrite¶Ë
int n = read(fd[0], buf, MAX_SIZE);
write(1, buf, n); //ÕûÊý1£¬ÔÚÎÒËùÖªµÀµÄ²Ù×÷ϵͳµÄʵÏÖÖÐÊDZê×¼Êä³öµÄFile descriptor
}
exit(0);
}
³ÌÐò´úÂëÖÐʹÓùܵÀµÄÌ×·һ°ãÊÇ£ºpipe;fork;exec*£¬²Ù×÷ϵͳÓÖÌṩÁËpopenºÍpcloseº¯ÊýÕûºÏÓйعܵÀµÄº¯Êý£¬Ê¹µÃ¿ÉÒÔÔÚ×Ô¼ºµÄ³ÌÐòÖÐÓøüÉٵĴúÂëʵÏֹܵÀ¡£
¾µäIPCÖ®¶þ£ºFIFOs, FIFOs are sometimes called named pipes(ÓÐÃû¹ÜµÀ)¡£Í»ÆÆÁËÖ»ÄÜÔÚÏà¹Ø½ø³Ì¼äʹÓõÄÏÞÖÆ.
d
²¹£ºÃæÊÔʱÎҲ²⹲ÏíÎļþÊÇÒ»ÖÖIPC£¬Õâ¸ö²»¶Ô¡£ÎÒÒòΪ¶Ô¹²ÏíÄÚ´æÃ»¼ÇÀο¿£¬ËùÒÔ»á²Â²âµ½¹²ÏíÎļþÊÇÒ»ÖÖIPC¡£
Ïà¹ØÎĵµ£º
Ò»¡¢ÒýÑÔ£º
±¾ÎĵµµÄÄÚÈݴ󲿷ÝÄÚÈݶ¼ÊÇ´ÓÍøÉÏÊÕ¼¯¶øÀ´£¬È»ºóÅäºÏһЩеĽØÍ¼£¨Äں˰汾£ºV2.4.19£©¡£ÔÚÿһÅäÖÃÏîºó»áÓÐÒ»¸öÑ¡ÔñÖ¸ÄϵIJ¿·Ý£¬ÓÃÀ´Ö¸µ¼´ó¼ÒÔõôÑù¸ù¾Ý×Ô¼ºµÄÇé¿öÀ´×öÏàÓ¦µÄÑ¡Ôñ£»»¹ÓÐÔÚÿһ¸ö´óÏîºÍÎĵµµÄ×îºó»áÓÐÒ»¸ö¾Ñé̸£¬ËüÊÇһЩ¸ßÊÖÃÇÔÚÓ¦¶ÔÎÊÌâºÍ´¦ÀíÌØÓÐÓ²¼þʱµÄһЩ¾Ñ飨Õâ¸ö»¹µ ......
ÓÉÓÚ Linux Á¼ºÃµÄÓû§È¨ÏÞ¹ÜÀíÌåϵ£¬²¡¶¾ÍùÍùÊÇ Linux ϵͳ¹ÜÀíÔ±×îºó²ÅÐèÒª¿¼ÂǵÄÎÊÌâ¡£ÒÔÍù£¬Linux ÉϵÄɱ¶¾Èí¼þÖ÷ÒªÊÇΪÆóÒµµÄÓʼþºÍÎļþ·þÎñÆ÷ËùÉè¼ÆµÄ¡£Èç½ñ£¬Ëæ×Å Linux ×ÀÃæÓû§ÊýÁ¿µÄÔö³¤£¬×ÀÃæÓû§ÔÚÊÜÒæÓÚ Linux ϵͳ¶Ô²¡¶¾½ÏÇ¿µÄÌìÈ»ÃâÒßÁ¦µÄͬʱ£¬Ò²ÐèҪɱ¶¾Èí¼þÇåÀí´ÓÍøÂç»òUÅÌ´øÀ´µÄWIndows²¡¶¾¡£¾¡¹ÜÄÇЩ ......
linux ¶àÏ̱߳à³Ì·Ç³£¼òµ¥¡£
Ò»¡¢¶àÏ̱߳à³ÌµÄÁ÷³Ì£º
´´½¨Ïß³Ì--->µ±Ç°Ï̼߳ÌÐø¹¤×÷--->£ÛÓë´´½¨µÄÏß³Ìͬ²½£Ý--->£ÛµÈ´ý´´½¨µÄÏ߳̽áÊøÓë·µ»Ø£Ý--->µ±Ç°Ï̼߳ÌÐø¹¤×÷¡£
--->´´½¨µÄÏ߳̿ªÊ¼¹¤×÷--->£ÛÓë±ðµÄÏß³Ìͬ²½£Ý---> ......
ÄÚºËÖÐËùÓÐÒÑ·ÖÅäµÄ×Ö·ûÉ豸±àºÅ¶¼¼Ç¼ÔÚÒ»¸öÃûΪ chrdevs É¢ÁбíÀï¡£¸ÃÉ¢ÁбíÖеÄÿһ¸öÔªËØÊÇÒ»¸ö char_device_struct ½á¹¹£¬ËüµÄ¶¨ÒåÈçÏ£º
static struct char_device_struct {
struct char_device_struct *next; // Ö¸ÏòÉ¢ÁгåÍ»Á´±íÖеÄÏÂÒ»¸öÔªËØ ......
½ñÌìѧµ½µÄ¶«¶«£º
1¡¢²é¿´½ø³ÌËù¶ÔÓ¦¿ÉÖ´ÐгÌÐòµÄ¾ø¶Ô·¾¶
[1]. ps -ef | grep ½ø³ÌÃû »ñµÃPID
[2]. ½øÈëprocÎļþϵͳÀï¶ÔÓ¦µÄĿ¼£º/proc/ <PID>
[3]. ls -l
exeÁ´½Ó¶ÔÓ¦µÄ¾ÍÊÇ¿ÉÖ´ÐÐÎļþµÄȫ·¾
......