ѧϰ±Ê¼Ç 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¿·Ý£¬ÓÃÀ´Ö¸µ¼´ó¼ÒÔõôÑù¸ù¾Ý×Ô¼ºµÄÇé¿öÀ´×öÏàÓ¦µÄÑ¡Ôñ£»»¹ÓÐÔÚÿһ¸ö´óÏîºÍÎĵµµÄ×îºó»áÓÐÒ»¸ö¾Ñé̸£¬ËüÊÇһЩ¸ßÊÖÃÇÔÚÓ¦¶ÔÎÊÌâºÍ´¦ÀíÌØÓÐÓ²¼þʱµÄһЩ¾Ñ飨Õâ¸ö»¹µ ......
ÄÚºËÖÐËùÓÐÒÑ·ÖÅäµÄ×Ö·ûÉ豸±àºÅ¶¼¼Ç¼ÔÚÒ»¸öÃûΪ chrdevs É¢ÁбíÀï¡£¸ÃÉ¢ÁбíÖеÄÿһ¸öÔªËØÊÇÒ»¸ö char_device_struct ½á¹¹£¬ËüµÄ¶¨ÒåÈçÏ£º
static struct char_device_struct {
struct char_device_struct *next; // Ö¸ÏòÉ¢ÁгåÍ»Á´±íÖеÄÏÂÒ»¸öÔªËØ ......
whereis ÃüÁîÏê½â
¹¦ÄÜ˵Ã÷£º²éÕÒÎļþ¡£
Óï¡¡¡¡·¨£ºwhereis [-bfmsu][-B ...][-M ...][-S ...][Îļþ...]
²¹³ä˵Ã÷£ºwhereisÖ¸Áî»áÔÚÌض¨Ä¿Â¼ÖвéÕÒ·ûºÏÌõ¼þµÄÎļþ¡£ÕâЩÎļþµÄÁÒÐÔÓ¦ÊôÓÚÔʼ´úÂ룬¶þ½øÖÆÎļþ£¬»òÊÇ°ïÖúÎļþ¡£
²Î¡¡¡¡Êý£º
¡¡-b ¡¡Ö»²éÕÒ¶þ½øÖÆÎļþ¡£
¡¡-B ¡¡Ö»ÔÚÉèÖõÄĿ¼Ï²éÕÒ¶þ½øÖÆÎļþ¡£
¡¡-f ......
Linux϶ÁÓ²ÅÌÐòÁкŵijÌÐò
/*
* gethddsn.c
*
* Get serial number of ide hard disk.
* example: my Maxtor 15G 's s/n is K306S04C.
*
* Compile with: gcc -O2 gethddsn.c
*
* Xiaoming DONG <xmdong@263.net>
* Aug 24, 2000
*
*/
#include <stdio.h>
#include <stdlib.h>
#includ ......