̽ÌÖLinuxÀú³Ì½øÈë˯ÃßµÄÔµ¹ÊÔÓÉ
LinuxÀú³Ì½øÈë˯ÃßÊÇÖ¸Àú³ÌÓÉÔËÐÐ״̬ת»»ÎªË¯Ãß״̬µÄÀú³Ì¡£ÔÚLinuxϵͳÖУ¬Àú³Ì½øÈë˯ÃßµÄÔµ¹ÊÔÓÉÓÐÐí¶à£¬Ö÷Òª°üÀ¨ÆÚ´ýijЩ×ÊÔ´¡¢ÆÚ´ýI/O²Ù×÷Íê³É¡¢ÆÚ´ýÐźŵȡ£ÔÚ±¾ÎÄÖУ¬ÎÒÃǽ«Ì½ÌÖLinuxÀú³Ì½øÈë˯ÃßµÄһЩ³£¼ûÔµ¹ÊÔÓÉ£¬²¢Í¨¹ýÏêϸµÄ´úÂëʾÀýÀ´ËµÃ÷¡£
×ÊÔ´ÆÚ´ý
Àú³Ì¿ÉÄÜÓÉÓÚÐèҪijЩ×ÊÔ´¶ø½øÈë˯Ãß״̬£¬ºÃ±ÈÆÚ´ýÆäËûÀú³ÌÊÍ·Åij¸ö¹²Ïí×ÊÔ´¡£ÔÚÒÔϵÄʾÀýÖУ¬ÎÒÃǽ¨ÉèÁ½¸ö×ÓÀú³Ì£¬Ò»¸öÀú³ÌÏÈ»ñÈ¡×ÊÔ´£¬ÁíÒ»¸öÀú³ÌÒªÆÚ´ýµÚÒ»¸öÀú³ÌÊÍ·Å×ÊÔ´ºó²Å»ª¼ÌÐøÖ´ÐС£
#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/wait.h> #include <sys/types.h> int main() { int fd[2]; pipe(fd); pid_t pid1 = fork(); if (pid1 == 0) { // ×ÓÀú³Ì1 close(fd[0]); // ¹Ø±Õ¶Á¶Ë¿Ú sleep(2); // Ä£Äâ»ñÈ¡×ÊÔ´µÄÀú³Ì close(fd[1]); // ÊÍ·Å×ÊÔ´ exit(0); } pid_t pid2 = fork(); if (pid2 == 0) { // ×ÓÀú³Ì2 close(fd[1]); // ¹Ø±Õд¶Ë¿Ú printf("×ÓÀú³Ì2ÆÚ´ý×ÊÔ´... "); char buf[10]; read(fd[0], buf, sizeof(buf)); // ÛÕ±ÕÆÚ´ý×ÊÔ´ printf("×ÓÀú³Ì2»ñµÃ×ÊÔ´£¬¼ÌÐøÖ´ÐС£ "); exit(0); } // ÆÚ´ý×ÓÀú³Ì¿¢Ê wait(NULL); wait(NULL); return 0; }
µÇ¼ºó¸´ÖÆ
ÔÚÉÏÊö´úÂëÖУ¬×ÓÀú³Ì2±»ÛÕ±ÕÔÚread()º¯Êý´¦£¬Ö±µ½×ÓÀú³Ì1ÊÍ·Å×ÊÔ´ºó²Å»ª¼ÌÐøÖ´ÐС£
I/O²Ù×÷
Àú³ÌÒ²¿ÉÄÜÓÉÓÚÐèÒª¾ÙÐÐI/O²Ù×÷¶ø½øÈë˯Ãß״̬¡£ÒÔÏÂÊÇÒ»¸ö¼òÆÓµÄʾÀý£¬Õ¹Ê¾ÁËÒ»¸öÀú³ÌÆÚ´ýÓû§ÊäÈëµÄÀú³Ì¡£
#include <stdio.h> #include <unistd.h> int main() { char buf[10]; printf("ÇëÊäÈëһЩÄÚÈÝ£º "); fgets(buf, sizeof(buf), stdin); // ÛÕ±ÕÆÚ´ýÓû§ÊäÈë printf("ÄúÊäÈëµÄÄÚÈÝÊÇ£º%s", buf); return 0; }
µÇ¼ºó¸´ÖÆ
ÔÚÉÏÊöʾÀýÖУ¬fgets()º¯Êý»áÒ»Ö±ÆÚ´ýÓû§ÊäÈëÄÚÈÝ¡£
ÐźÅÆÚ´ý
Àú³Ì»¹¿ÉÄÜÓÉÓÚÆÚ´ýÐźŶø½øÈë˯Ãß״̬¡£ÒÔϵÄʾÀýչʾÁËÒ»¸öÀú³ÌÆÚ´ýÐźŵÄÀú³Ì¡£
#include <stdio.h> #include <unistd.h> #include <signal.h> void signal_handler(int signal) { printf("ÊÕµ½Ðźţº%d ", signal); } int main() { signal(SIGUSR1, signal_handler); // ×¢²áÐźŴ¦Àíº¯Êý printf("ÆÚ´ýÐźÅ... "); pause(); // Àú³ÌÒ»Ö±ÆÚ´ýÐźŠreturn 0; }
µÇ¼ºó¸´ÖÆ
ÔÚÉÏÊöʾÀýÖУ¬Àú³Ìͨ¹ýpause()º¯ÊýÒ»Ö±ÆÚ´ýÐźŵĵ½À´¡£
ͨ¹ýÒÔÉϵĴúÂëʾÀý£¬ÎÒÃÇ¿ÉÒÔ¿´µ½LinuxÀú³Ì½øÈë˯ÃßµÄÔµ¹ÊÔÓÉÓÐÐí¶à£¬°üÀ¨ÆÚ´ýijЩ×ÊÔ´¡¢ÆÚ´ýI/O²Ù×÷Íê³É¡¢ÆÚ´ýÐźŵȡ£ÕâЩ¶¼ÊÇLinuxϵͳÖÐÀú³Ìµ÷ÀíºÍÔËÐеÄÖ÷Òª·½Ã棬ÉîÈëÏàʶÕâЩÔÀí¿ÉÒÔ×ÊÖúÎÒÃǸüºÃµØÃ÷È·Àú³ÌµÄÔËÐлúÖÆ¡£
ÒÔÉϾÍÊÇ̽ÌÖLinuxÀú³Ì½øÈë˯ÃßµÄÔµ¹ÊÔÓɵÄÏêϸÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡