ÍøÉϹØÓÚfork()ÎÄÕ¶¼Ëµfork()À´´´½¨×Ó½ø³Ì,ÀûÓ÷µ»ØÖµµÄ²»Í¬À´Ö´Ðв»Í¬µÄ´úÂð¶Î.µ«¶¼Ã»ÓÐ˵µ½ÈçºÎʵÏÖ²»Í¬µÄ·µ»ØÖµ.ÏÂÃæÎÒ½«ºÍÄãÀ´ËµËµÕâ¸öÎÊ題:
¿¼ÂÇÈçÏ´úÂë:
int i = fork();
if ( i )
{
......
}
else
{
........
}
.......
µ±¸¸½ø³ÌÖ´Ðе½ÕâÒ»¾äʱ:int i = fork(),¾Í´´½¨ÁËÒ»¸öеĽø³Ì,еĽø³ÌÓÐ×Ô¼ºµÄ¶ÑÕ»¶ÎºÍ´úÂë¶Î,µ«ÊǺ͸¸½ø³Ì¹²Ïí´úÂë¶Î.×îÐèÒªÖ÷ÒâµÄÊÇ,
×Ó½ø³ÌµÄÉÏÏÂÎ ......
Ãû³Æ£ºcat
ʹÓÃȨÏÞ£ºËùÓÐʹÓÃÕß
ʹÓ÷½Ê½£ºcat [-AbeEnstTuv] [--help] [--version] fileName
˵Ã÷£º°Ñµµ°¸´®Á¬½Óºó´«µ½»ù±¾Êä³ö£¨Ó©Ä»»ò¼Ó > fileName µ½ÁíÒ»¸öµµ°¸£©
²ÎÊý£º
-n »ò --number ÓÉ 1 ¿ªÊ¼¶ÔËùÓÐÊä³öµÄÐÐÊý±àºÅ
-b »ò --number-nonblank ºÍ -n ÏàËÆ£¬Ö»²»¹ý¶ÔÓÚ¿Õ°×Ðв»±àºÅ
-s »ò --squeeze-blank µ±Óöµ½ÓÐÁ¬ÐøÁ½ÐÐÒÔÉϵĿհ×ÐУ¬¾Í´ú»»ÎªÒ»ÐеĿհ×ÐÐ
-v »ò --show-nonprinting
·¶Àý£º
cat -n textfile1 > textfile2 °Ñ textfile1 µÄµµ°¸ÄÚÈݼÓÉÏÐкźóÊäÈë textfile2 Õâ¸öµµ°¸Àï
cat -b textfile1 textfile2 >> textfile3 °Ñ textfile1 ºÍ textfile2 µÄµµ°¸ÄÚÈݼÓÉÏÐкţ¨¿Õ°×Ðв»¼Ó£©Ö®ºó½«ÄÚÈݸ½¼Óµ½ textfile3 Àï¡£
·¶Àý£º
°Ñ textfile1 µÄµµ°¸ÄÚÈݼÓÉÏÐкźóÊäÈë textfile2 Õâ¸öµµ°¸Àï
cat -n textfile1 > textfile2
°Ñ textfile1 ºÍ textfile2 µÄµµ°¸ÄÚÈݼÓÉÏÐкţ¨¿Õ°×Ðв»¼Ó£©Ö®ºó½«ÄÚÈݸ½¼Óµ½ textfile3 Àï¡£
cat -b textfile1 textfile2 >> textfile3
cat /dev/null > /etc/test.txt ´ËΪÇå¿Õ/etc/test.txtµµ°¸ÄÚÈÝ
cat Ò²¿ÉÒÔÓÃÀ´ÖÆ×÷ image file¡£ÀýÈçÒªÖÆ×÷ÈíµúµÄ image file£¬½«È ......
ÔÚLinuxϵͳÖУ¬¼¸ºõËùÓеÄÓ²¼þ×°ÖôúºÅµµ°¸¶¼ÔÚ/devÕâ¸öĿ¼ÖУ¬
Èç
IDEÓ²ÅÌ£º/dev/hd[a-d]
¹âÇý£º/dev/cdrom
ÈíÅÌ£º/dev/fd[0-1]
Êó±ê£º/dev/mouse
´òÓ¡»ú£º/dev/lp[0-2]
USBËæÉíµú£¬SCSIÓ²ÅÌ£º/dev/sd[a-p]
Íø¿¨£º/dev/eth[0-n]
RAID : /dev/md[0-15]
Ö÷»úÓ²Å̵ÄÖ÷Òª¹æ»®£º
1. ×î¼òµ¥µÄÇи·¨£º Linux °²×°µÄ¹ý³ÌÖУ¬ÖÁÉÙÒªÓÐÁ½¸ö partition ²ÅÐУ¬Ò»¸öÊÇ¡º / ¡»£¬ÁíÒ»¸öÔòÊÇÐéÄâÄڴ桺 Swap ¡»£¬Èç¹ûÄãµÄÓ²Å̺ÜС£¨ÀýÈçСÓÚ 1GB µÄСӲÅÌ£©£¬ÄÇôʹÓÃÕâ¸ö·Ö¸îµÄ·½·¨»á±È½ÏºÃ£¡
2. ÉÔ΢Âé·³Ò»µãµÄ·½Ê½£ºÔÚÔ¤ÉèµÄÇé¿öÏ£¬ÓÉÓÚ Linux µÄ²Ù×÷ϵͳ¶¼ÊǰÚÔÚ /usr/ µ±ÖУ¬ËùÒÔ啰£¬Äã¿ÉÒÔ½«Õâ¸ö²¿·ÖÇиîµÄ´óÒ»µã£¬ÁíÍ⣬ÓÉÓÚʹÓÃÕßµÄÐÅÏ¢¶¼ÊÇÔÚ /home µ×Ï£¬Òò´ËÕâ¸öÒ²¿ÉÒÔ´óһЩ£¬¶ø /var µ×ÏÂÊǼǼËùÓÐÔ¤Éè·þÎñÆ÷µÄµÇ¼µµ£¬ÇÒ mail Óë WWW Ô¤ÉèµÄ·¾¶Ò²ÔÚ /var µ×Ï£¬Òò´ËÕâ¸ö¿Õ¼ä¿ÉÒÔ¼Ó´óһЩร¡ËùÒÔ£¬ÐèÒªµÄĿ¼¾ÍÓУº
o / £º¸ùĿ¼
o /usr £ºLinux µÄ²Ù×÷ϵͳ
o /home£ºÊ¹ÓÃÕßÐÅÏ¢
o /var £º¼Ç¼ËùÓÐÔ¤Éè·þÎñÆ÷µÄµÇ¼µµ£¬ÇÒmail ÓëwwwÔ¤ÉèµÄ·¾¶Ò²ÔÚÕâ¸öÏÂÃæ
o Swap £º ÐéÄâÄÚ´æ
Èç¹ûÓ²ÅÌ´óÓÚ60GBµÄ»°£¬Îª±ÜÃ⿪»úÎÊÌ⣬½¨Òé¶à¹æ» ......
Linux¶à½ø³ÌÏà¹ØÄÚÈÝ
°æÈ¨ÉùÃ÷£º¿ÉÒÔÈÎÒâ×ªÔØ£¬µ«×ªÔØÊ±±ØÐë±êÃ÷Ô×÷Õßcharlee¡¢ÔʼÁ´½Óhttp://tech.idv2.com/2006/10/14/linux-multiprocess-info/ÒÔ¼°±¾ÉùÃ÷¡£
×î½üÔÚÓà perl дһ¸öLinuxÏÂµÄ¶à½ø³ÌÊØ»¤½ø³Ì£¬Òò´ËÑо¿ÁËÒ»ÏÂLinuxϵĽø³ÌÏà¹ØµÄ֪ʶ¡£ÏÖ½«ÐĵÃ×ܽáһϡ£Ö÷ÒªÊǹØÓÚ½ø³Ì´´½¨ºÍ»ØÊÕ¡£
fork
SIGCHLDÐźźͽ©Ê¬½ø³Ì
ÀûÓà waitpid »ØÊÕ½©Ê¬½ø³Ì
ºöÂÔ SIGCHLD »ØÊÕ½©Ê¬½ø³Ì
fork
Ê×ÏÈ˵˵ fork
º¯Êý¡£Õâ¸öº¯ÊýÓÃÀ´´´½¨Ò»¸ö½ø³Ì£¬²»¹ý´´½¨·½·¨ÓÐЩ²»Ì«ºÃÀí½â¡£ÏÈ¿´ÏÂÃæµÄ³ÌÐò
fork-test.pl¡£ÎÒÊÇÓÃperlдµÄ£¬²»¹ýÏàͬµÄ¹¦ÄÜÒ²¿ÉÒÔÓà C À´Íê³É¡£
#!/usr/bin/perl
#------------------------------------
# fork-test.pl
print "Program started, pid=$$.\n";
if ($child_pid = fork()) {
print "I'm parent, my pid=$$, child's pid=$child_pid.\n";
} else {
print "I'm child, pid=$$.\n";
}
ÔËÐÐÖ®ºóÏÔʾÏÂÃæµÄ½á¹û¡£
Program started, pid=8934.
I'm child, pid=8935.
I'm parent, my pid=8934, child's pid=8935.
Ϊʲô I'm child ºÍ I'm parent ¶¼»á±»ÏÔʾ£¿ÕâÊÇÒòΪ fork µ÷ÓÃʱ£¬µ±Ç°µÄ½ø³Ì»á´Ó fork µÄλÖÃÒ»·ÖΪ¶þ£¬f ......
LInux
ÏÂ
ÈçºÎ°²×°ffmpeg
¹Ø¼ü×Ö: linux
ffmpeg
ÖÕÓÚ×°ÉÏÁË£¬°Ñ¹ý³Ì¼Ç¼һÏÂ
Ê×ÏÈÒª°²×°¸÷ÖÖ½âÂëÆ÷
1¡¢lame
lame-3.97.tar.gz
Url£ºhttp://sourceforge.net/project/showfiles.php?group_id=290&package_id=309
°²×°·½·¨ÈçÏ£º
Java´úÂë < type="application/x-shockwave-flash" width="14" height="15" src="http://yezi.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" src="http://yezi.javaeye.com/javascripts/syntaxhighlighter/clipboard_new.swf" flashvars="clipboard=tar%20-zxvf%20lame-3.97.tar.gz%0Acd%20lame-3.97%0A.%2Fconfigure%20--enable-shared%20--prefix%3D%2Fusr%0Amake%0Amake%20install" quality="high" allowscriptaccess="always" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" width="14" height="15">
tar -zxvf lame-
3.97
.tar.gz
cd lame-3.97
./configure --enable-shared --prefix=/usr
make
make install
......
List_Head
²Ù×÷ϵͳÄں˾³£ÐèҪά»¤Êý¾Ý½á¹¹¡£ÄÚºËÓбê×¼µÄÑ»·Á´±í¡¢Ë«Ïò
Á´±íµÄʵÏÖ¡£ÔÚ
<Linux/list.h>
ÎļþÖж¨ÒåÁËÒ»¸ö
list_head
ÀàÐͼòµ¥½á¹¹£º
struct
list_head {
struct list_head *next, *prev;
};
ͨÓÃÁ´±íµÄ³£ÓÃÓÃ;Êǽ«Ä³Ò»¸öÊý¾Ý½á¹¹±¾Éí´®³ÉÁ´±í£¬»ò½«Ä³Ð©Á´
±íÓëÒ»¸öÊý¾Ý½á¹¹ÁªÏµÆðÀ´£¬ÕâÁ½ÖÖÇé¿öʵÖÊÉ϶¼ÊÇÓɽṹ
list_head
×é³ÉÁ´±í£¬Ö»ÊÇ
list_head
Ëù
“
±³¸º
”
µÄ¸ºÔز»Ò»Ñù¡£ÏÂÃæ·Ö±ð¾ÙÀý˵Ã÷ÕâÁ½ÖÖÓÃ;¡£
ÒÔÏÂʾÀý˵Ã÷ÁËÈçºÎ½«Ä³Ò»¸öÊý¾Ý½á¹¹±¾Éí´®³ÉÁ´±í£¬²¢¶ÔÁ´±í½øÐÐ
²Ù×÷£¬Í¬Ê±»¹ËµÃ÷
list_head
½á¹¹µÄʵÏÖÓëʹÓá£
ʾÀý£º½«Ä³Ò»¸öÊý¾Ý½á¹¹±¾Éí´®³ÉÁ´±í¡£
£¨
1
£©¼ÓÈë
list_head
½á¹¹³ÉÔ±¡£
¼ÙÉèÓÐÒ»¸ö
example_struct
½á¹¹ÐèÁ¬½Ó³ÉÁ´±í£¬Òò¶øÔÚÆä½á¹¹ÀïÃæ¼ÓÉÏ
list_head
³ÉÔ±£¬¾Í×é³ÉÁ˽ṹÁ´±í£¬ÈçÏ£º
struct
example_struct {
struct list_head list;
int priority;
……//
ÆäËû³ÉÔ±
};
ÔÚ
example_struct
½á¹¹ÖеÄ
list
³ÉÔ±£¬ÓÃÀ´½«
example_struct ......