µ±Ç°Î»ÖãºÊ×Ò³ > ¼ÆËã»ú×é³ÉÔÀíÓë²Ù×÷ϵͳ-ʵÑéÖ¸µ¼Êé
¡¶²Ù×÷ϵͳÔÀí¼°Ó¦Óá·ÊµÑéÖ¸µ¼Êé
³ÌÐòÖе÷ÓÃsystemº¯Êýʱ£¬ÓÃ×Ö·û´®²ÎÊý´«µÝÒ»¸öshellÃüÁ²¢Ö´ÐÐ º¯ÊýÔÐÍ£º #include
µ÷ÓþÙÀý£ºsystem(¡°ps -af¡±);
ʵÑéÖ¸µ¼
1¡¢Áгöµ±Ç°ÖÕ¶ËÉÏÆô¶¯µÄËùÓнø³Ì¡£ÊÔ¹Û²ìÆÁÄ»ÉϵÄÏÔʾ½á¹û¡£ [root@localhost root]# ps -af
UID PID PPID C STIME TTY TIME CMD root 3210 3166 0 15:51 pts/1 00:00:00 ps ¨Caf
Õâ¾ÍÊÇ˵,Öն˽ø³ÌµÄpidÊÇ3166,ÎÒÃÇÔÚµ±Ç°ÖÕ¶ËÉÏÖ´ÐÐÁËÃüÁî\-af\Òò´Ë¸ÃÖն˽ø³ÌÆô¶¯ÁË×Ó½ø³Ì²¢Ê¹ÆäÖ´ÐиÃÃüÁî,Õâ¸ö×Ó½ø³ÌµÄpid¾ÍÊÇ3210¡£ [root@localhost root]# ps ¨Cu os001
2¡¢ÏÔʾϵͳÖеĽø³Ì״̬¡£ÊÔ¹Û²ì¼Ç¼ÆÁÄ»ÉϵÄÏÔʾ½á¹û¡£ [root@localhost program]# top
21:00:23 up 2:26, 2 users, load average: 0.00, 0.01, 0.02 60 processes: 57 sleeping, 2 running, 1 zombie, 0 stopped
CPU states: 3.0% user 0.2% system 0.0% nice 0.0% iowait 96.8% idle Mem:117912k av,116168k used,1744k free,0k shrd,
7000k buff 73180k actv,396k in_d,1300k in_c
Swap: 265032k av, 73748k used, 191284k free 43000k cached
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND 2998 root 16 0 24072 7992 716 R 2.1 6.7 2:10 0 X
3115 root 15 0 6528 5268 2632 S 0.7 4.4 0:12 0 gnome-terminal 1 root 15 0 108 84 56 S 0.0 0.0 0:04 0 init 2 root 15 0 0 0 0 S W 0.0 0.0 0:00 0 keventd ..........................
3¡¢ÏÔʾlinuxϵͳÖеĽø³ÌÊ÷¡£ÊÔ¹Û²ì·ÖÎöÆÁÄ»ÉϵÄÏÔʾ½á¹û¡£
[root@localhost program]# pstree
4¡¢±àд³ÌÐò£¬Ê¹ÓÃfork( )´´½¨Á½¸ö×Ó½ø³Ì¡£¹Û²ìÔÚ³ÌÐòÔËÐйý³ÌÖеĽø³Ì״̬±ä»¯,·ÖÎöÔÒò¡£
(1)²ÎÕղο¼³ÌÐò±àд£¬Ê¹ÓÃϵͳµ÷ÓÃfork( )´´½¨Á½¸ö×Ó½ø³Ì¡£µ±´Ë³ÌÐòÔËÐÐʱ£¬ÔÚϵͳÖÐÓÐÒ»¸ö¸¸½ø³ÌºÍÁ½¸ö×Ó½ø³Ì»î¶¯¡£ÈÃÿһ¸ö½ø³ÌÔÚÆÁÄ»ÉÏÏÔʾһ¸ö×Ö·û´®,ÆäÖÐ,ÿ¸ö½ø³ÌÏÔʾÆäpidÖµ£¬¼°Æä¸¸½ø³ÌµÄpidÖµ¡£ÀàËÆÈçÏÂÏÔʾ:¸¸½ø³ÌÏÔʾ'\£¬×Ó½ø³Ì·Ö±ðÏÔʾ'\child1.pid:..., ppid:.... \ºÍ'\¡£ÊԹ۲첢·ÖÎöÆÁÄ»ÉϵÄÏÔʾ½á¹û¡£ [root@localhost program]# ./fp
In parent when no child:pid:3750,ppid:3726 In child1:pid:3752,ppid:3750 In parent when one child: In child2:pid:3755,ppid:3750 In parent when two children:
(2)Ò²¿ÉÓÃltrace -f -i -S ./executable-file-name²é¿´ÒÔÉϳÌÐòÖ´Ðйý³Ì¡£
´Ó½ø³Ì²¢·¢Ö´ÐÐÀ´¿´£¬ÉÏÃæµÄÈý¸ö½ø³ÌûÓÐͬ²½´ëÊ©£¬Ö»Òª½ø³Ì¾ÍÐ÷¾Í¿ÉÄÜÖ´ÐУ¬Òò´Ë¸÷ÖÖÖ´ÐÐ˳Ðò¶¼ÓпÉÄÜ£¬ËùÒÔÈý¸ö½ø³ÌµÄÊä³ö´ÎÐò´øÓÐËæ»úÐÔ¡£²¢ÇÒ£¬Ã¿µ±Ò»¸ö½ø³ÌÖ´ÐÐÁËÒ»¶Îʱ¼ä£¬ÆäËü¾ÍÐ÷½ø³Ì¿ÉÄÜÇÀÕ¼´¦Àí»ú£¬Òò´Ë£¬¶à¸ö½ø³Ì¿ÉÄܽ»´íÖ´ÐС£²»¹ý£¬²Ù×÷ϵͳʵÏÖº¯Êýprintf( )ʱ£¬±£Ö¤Á˽ø³Ìÿ´Îµ÷Óøú¯ÊýÊä³öÒ»¸ö×Ö·û´®Ê±²»»á±»Öжϡ£ÁíÍ⣬LinuxȱʡµÄµ÷¶È²ßÂÔ ÊÇFIFOºÍʱ¼äƬÂÖת¡£
8
¡¶²Ù×÷ϵͳÔÀí¼°Ó¦Óá·ÊµÑéÖ¸µ¼Êé
5¡¢WindowsϵĽø³Ì¹Û²ì
°´ÏÂCTRL-ALT-DEL (»òÔÚÈÎÎñÀ¸Éϵã»÷Êó±êÓÒ¼üÑ¡ÔñÈÎÎñ¹ÜÀíÆ÷) ´ò¿ªwindowsÈÎÎñ¹ÜÀíÆ÷¶Ô»°¿ò ¡£
a.Ñ¡Ôñ¡°½ø³Ì¡±±êÇ©£¬ÁгöÄãµÄ¼ÆËã»úÉÏÕýÔÚÔËÐеÄÈý¸ö½ø³Ì b.½ø³ÌµÄ±êʶ·û(PID)ÊÇΨһµÄÂð£¿ÎªÊ²Ã´£¿
c.ÕÒµ½µ±Ç°CPUÕ¼ÓÃÂÊ×î¸ßµÄ½ø³Ì£¬Ð´ÏÂËüµÄÃû×Ö¡¢CPUÕ¼ÓÃÂÊ¡¢ÒÔ¼°ÄÚ´æÊ¹ÓÃÁ¿¡£ e.ÄãµÄϵͳÉÏ×ܵÄÎïÀíÄÚ´æºÍϵͳ»º³åÊǶà´ó£¿
²Î¿¼³ÌÐò
#include
int p1,p2;
printf(\¡±);
while((p1=fork())== -1); /*´´½¨×Ó½ø³Ì1*/ if (p1==0) {
printf(\×Ó½ø³Ì1¶Î } else {
printf(\¸¸½ø³Ì¶Îa while((p2=fork())== -1); /*´´½¨×Ó½ø³Ì2*/ if(p2==0) {
printf(\×Ó½ø³Ì2¶Î } else {
printf(\
pid:%d,ppid:%d\\n\¸¸½ø³Ì¶Îb } } }
˼¿¼Ìâ
£¨1£©ÔÚÖÕ¶ËÔËÐеÄÓû§Ö´ÐгÌÐò,Æä¸¸½ø³ÌÊÇË?ϵͳÊÇÔõÑù´´½¨½ø³ÌµÄ£¿ £¨2£©µ±Ê×´ÎÖ´ÐÐд´½¨µÄ½ø³Ìʱ£¬ÆäÈë¿ÚÔÚÄÄÀ
9
¡¶²Ù×÷ϵͳÔÀí¼°Ó¦Óá·ÊµÑéÖ¸µ¼Êé
ʵÑéÈý ½ø³Ì¹Û²ìʵÑ飨¶þ£©£º½ø³ÌµÄ¿ØÖÆ
ʵÑéÄ¿µÄ
1¡¢ÁË½â½ø³Ì´´½¨ºó¶Ô½ø³Ì¿ØÖƵÄϵͳµ÷Ó㬿ÉʵÏÖ¶Ô½ø³ÌµÄÓÐЧ¿ØÖÆ
2¡¢ÕÆÎÕ½ø³ÌµÄ˯Ãß¡¢Í¬²½¡¢³·ÏûµÈ½ø³Ì¿ØÖÆ·½·¨
ʵÑéÄÚÈÝ
1¡¢Í¨¹ýÏà¹ØÃüÁ¶Ô½ø³ÌµÄ״̬½øÐпØÖÆ¡£
2¡¢±àд³ÌÐò£¬Ê¹ÓÃfork( )´´½¨Ò»¸ö×Ó½ø³Ì¡£Ê¹ÓÃÏà¹ØµÄϵͳµ÷ÓÿØÖƽø³ÌµÄ״̬¡£¹Û²ì²¢·ÖÎö¶à½ø³ÌµÄÖ´ÐдÎÐò¼°×´Ì¬×ª»»¡£
ʵÑé»ù´¡
Ò»¡¢½ø³ÌµÄ¿ØÖÆ
½ø³ÌÒò´´½¨¶ø´æÔÚ£¬ÒòÖ´ÐÐÍê³É»òÒì³£ÔÒò¶øÖÕÖ¹.ÔÚ½ø³ÌµÄÉúÃüÖÜÆÚÖУ¬½ø³ÌÔÚÄÚ´æÖÐÓÐÈýÖÖ»ù±¾×´Ì¬:¾ÍÐ÷£¬Ö´ÐУ¬×èÈû.½ø³Ì״̬µÄת»»ÊÇͨ¹ý½ø³Ì¿ØÖÆÔÓïÀ´ÊµÏֵġ£
Linux²Ù×÷ϵͳÌṩÁËÏàÓ¦¹¦ÄܵÄϵͳµ÷Óü°ÃüÁÀ´ÊµÏÖÓû§²ãµÄ½ø³Ì¿ØÖÆ¡£
ÏÖÔÚÎÒÃÇ¿ªÊ¼½²ÊöһϽø³ÌµÄ¿ØÖÆ£¬Ö÷Òª½éÉÜÄں˶Ôfork¡¢exec¡¢wait¡¢exitµÄ´¦Àí¹ý³Ì¡£ ÔÚLinuxϵͳÖУ¬Óû§´´½¨Ò»¸ö½ø³ÌµÄΨһ·½·¨¾ÍÊÇʹÓÃϵͳµ÷ÓÃfork¡£ÄÚºËΪÍê³Éϵͳµ÷ÓÃforkÒª½øÐм¸²½²Ù×÷µÚÒ»²½£¬ÎªÐ½ø³ÌÔÚ½ø³Ì±íÖзÖÅäÒ»¸ö±íÏϵͳ¶ÔÒ»¸öÓû§¿ÉÒÔͬʱÔËÐеĽø³ÌÊýÊÇÓÐÏÞÖÆµÄ£¬¶Ô³¬¼¶Óû§Ã»ÓиÃÏÞÖÆ£¬µ«Ò²²»Äܳ¬¹ý½ø³Ì±íµÄ×î´ó±íÏîµÄÊýÄ¿¡£µÚ¶þ²½£¬¸ø×Ó½ø³ÌÒ»¸öΨһµÄ½ø³Ì±êʶºÅ£¨PID£©¡£¸Ã½ø³Ì±êʶºÅÆäʵ¾ÍÊǸñíÏîÔÚ½ø³Ì±íÖеÄË÷ÒýºÅ¡£µÚÈý²½£¬¸´ÖÆÒ»¸ö¸¸½ø³ÌµÄ½ø³Ì±íÏîµÄ¸±±¾¸ø×Ó½ø³Ì¡£Äں˳õʼ»¯×Ó½ø³ÌµÄ½ø³Ì±íÏîʱ£¬ÊÇ´Ó¸¸½ø³Ì´¦¿½±´µÄ¡£ËùÒÔ×Ó½ø³ÌÓµÓÐÓ븸½ø³ÌÒ»ÑùµÄuid¡¢euid¡¢gid¡¢ÓÃÓÚ¼ÆËãÓÅÏÈȨµÄniceÖµ¡¢µ±Ç°Ä¿Â¼¡¢µ±Ç°¸ù¡¢Óû§ÎļþÃèÊö·û±íµÈ¡£µÚËIJ½£¬°ÑÓ븸½ø³ÌÏàÁ¬µÄÎļþ±íºÍË÷Òý½Úµã±íµÄÒýÓÃÊý¼Ó1¡£ÕâЩÎļþ×Ô¶¯µØÓë¸Ã×Ó½ø³ÌÏàÁ¬¡£µÚÎå²½£¬ÄÚºËΪ×Ó½ø³Ì´´½¨Óû§¼¶ÉÏÏÂÎÄ¡£µÚÁù²½£¬Éú³É½ø³ÌµÄ¶¯Ì¬²¿·Ö£¬Äں˸´ÖƸ¸½ø³ÌµÄÉÏÏÂÎĵĵÚÒ»²ã£¬¼´¼Ä´æÆ÷ÉÏÏÂÎĺÍÄÚºËÕ»£¬ÄÚºËÔÙΪ×Ó½ø³ÌÐéÉèÒ»¸öÉÏÏÂÎIJ㣬ÕâÊÇΪÁË×Ó½ø³ÌÄÜ¡°»Ö¸´¡±ËüµÄÉÏÏÂÎÄ¡£Õâʱ£¬¸Ãµ÷Óûá¶Ô¸¸½ø³Ì·µ»Ø×Ó½ø³ÌµÄpid£¬¶Ô×Ó½ø³Ì·µ»Ø0¡£
LinuxϵͳµÄϵͳµ÷ÓÃexit£¬Êǽø³ÌÓÃÀ´ÖÕÖ¹Ö´ÐÐʱµ÷Óõġ£½ø³Ì·¢³ö¸Ãµ÷Óã¬Äں˾ͻáÊͷŸýø³ÌËùÕ¼µÄ×ÊÔ´£¬ÊͷŽø³ÌÉÏÏÂÎÄËùÕ¼µÄÄÚ´æ¿Õ¼ä£¬±£Áô½ø³Ì±íÏ½«½ø³Ì±íÏîÖмͼ½ø³Ì״̬µÄ×Ö¶ÎÉèΪ½©ËÀ״̬¡£ÄÚºËÔÚ½ø³ÌÊÕµ½²»¿É²¶×½µÄÐźÅʱ£¬»á´ÓÄÚºËÄÚ²¿µ÷ÓÃexit£¬Ê¹µÃ½ø³ÌÍ˳ö¡£¸¸½ø³Ìͨ¹ýwaitµÃµ½Æä×Ó½ø³ÌµÄ½ø³Ì±íÏîÖмͼµÄ¼ÆÊ±Êý¾Ý£¬²¢ÊͷŽø³Ì±íÏî¡£×îºó£¬ÄÚºËʹµÃ½ø³Ì1£¨init½ø³Ì£©½ÓÊÕÖÕÖ¹Ö´ÐеĽø³ÌµÄËùÓÐ×Ó½ø³Ì¡£Èç¹ûÓÐ×Ó½ø³Ì½©ËÀ£¬¾ÍÏòinit½ø³Ì·¢³öÒ»¸öSIGCHLDµÄÈíÖжÏÐźÅ.
Ò»¸ö½ø³Ìͨ¹ýµ÷ÓÃwaitÀ´ÓëËüµÄ×Ó½ø³Ìͬ²½£¬Èç¹û·¢³öµ÷ÓõĽø³ÌûÓÐ×Ó½ø³ÌÔò·µ»ØÒ»¸ö´íÎó£¬Èç¹ûÕÒµ½Ò»¸ö½©ËÀµÄ×Ó½ø³Ì¾ÍÈ¡×Ó½ø³ÌµÄPID¼°Í˳öʱÌṩ¸ø¸¸½ø³ÌµÄ²ÎÊý¡£Èç¹ûÓÐ×Ó½ø³Ì£¬µ«Ã»Óн©ËÀµÄ×Ó½ø³Ì£¬·¢³öµ÷ÓõĽø³Ì¾Í˯ÃßÔÚÒ»¸ö¿ÉÖжϵļ¶±ðÉÏ£¬Ö±µ½ÊÕµ½Ò»¸ö×Ó½ø³Ì½©ËÀ£¨SIGCLD£©µÄÐźŻòÆäËûÐźš£
½ø³Ì¿ØÖƵÄÁíÒ»¸öÖ÷ÒªÄÚÈݾÍÊÇ¶ÔÆäËû³ÌÐòÒýÓ᣸ù¦ÄÜÊÇͨ¹ýϵͳµ÷ÓÃexecÀ´ÊµÏֵģ¬¸Ãµ÷Óý«Ò»¸ö¿ÉÖ´ÐеijÌÐòÎļþ¶ÁÈ룬´úÌæ·¢³öµ÷ÓõĽø³ÌÖ´ÐС£Äں˶ÁÈë³ÌÐòÎļþµÄÕýÎÄ£¬Çå³ýÔÏȽø³ÌµÄÊý¾ÝÇø£¬Çå³ýÔÏÈÓû§ÈíÖжÏÐźŴ¦Àíº¯ÊýµÄµØÖ·£¬µ±execµ÷Ó÷µ»ØÊ±£¬½ø³ÌÖ´ÐÐеÄÕýÎÄ¡£
½²Ò»Ï½ø³Ìµ÷¶ÈµÄ¸ÅÄî¡£LinuxϵͳÊÇÒ»¸ö·Öʱϵͳ£¬Äں˸øÃ¿¸ö½ø³Ì·ÖÒ»¸öʱ¼äƬ£¬¸Ã½ø³ÌµÄʱ¼äƬÓÃÍê¾Í»áµ÷¶ÈÁíÒ»¸ö½ø³ÌÖ´ÐС£LINUXϵͳÉϵĵ÷¶È³ÌÐòÊôÓڶ༶·´À¡Ñ»·µ÷¶È¡£¸Ãµ÷¶È·½·¨ÊÇ£¬¸øÒ»¸ö½ø³Ì·ÖÒ»¸öʱ¼äƬ£¬ÇÀÏÈÒ»¸öÔËÐг¬¹ýʱ¼äƬµÄ½ø³Ì£¬²¢°Ñ½ø³Ì·´À¡µ½Èô¸ÉÓÅÏȼ¶
10
¡¶²Ù×÷ϵͳÔÀí¼°Ó¦Óá·ÊµÑéÖ¸µ¼Êé
¶ÓÁÐÖеÄÒ»¸ö¶ÓÁС£½ø³ÌÔÚÖ´ÐÐÍê֮ǰ£¬Òª¾¹ýÕâÑù¶à´Î·´À¡Ñ»·¡£
½ø³Ìµ÷¶È·Ö³ÉÁ½¸ö²¿·Ö£¬Ò»¸öÊǵ÷¶ÈµÄʱ»ú£¬¼´Ê²Ã´Ê±ºòµ÷¶È£»Ò»¸öÊǵ÷¶ÈµÄËã·¨£¬¼´ÈçºÎµ÷¶ÈºÍµ÷¶ÈÄĸö½ø³Ì¡£
¶þ¡¢Ïà¹ØµÄÃüÁî
£¨1£©Ë¯ÃßÖ¸¶¨Ê±¼ä Ö´Ðиñʽ£º# sleep x
XΪָ¶¨Ë¯ÃßµÄÃëÊý¡£ £¨2£©½áÊø»òÖÕÖ¹½ø³Ì kill
Ö´Ðиñʽ£º# kill [-9] PID £¨PIDΪÀûÓÃpsÃüÁîËù²é³öµÄprocess ID£© Àý£º kill -9 456 ÖÕÖ¹process ID Ϊ456µÄprocess £¨3£©ºǫ́£¨background£©Ö´ÐÐprocess commandµÄÃüÁî Ö´Ðиñʽ£º# command & £¨ÔÚÃüÁîºó¼ÓÉÏ &£© Àý£º gcc file1 & ÔÚºǫ́±àÒëfile1.c ×¢Ò⣺°´ÏÂ^Z£¬ÔÝÍ£ÕýÔÚÖ´ÐеÄprocess¡£¼üÈ롱bg¡±£¬½«ËùÔÝÍ£µÄprocessÖÃÈëbackgroundÖмÌÐøÖ´ÐС£
Àý£º# gcc file1 & ^Z stopped # bg
£¨4£©²é¿´ÕýÔÚbackgroundÖÐÖ´ÐеÄprocess Ö´Ðиñʽ£º# jobs
£¨5£©½áÊø»òÖÕÖ¹ÔÚbackgroundÖеĽø³Ì kill Ö´Ðиñʽ£º# kill %n
Àý£º kill %1 ÖÕÖ¹ÔÚbackgroundÖеĵÚÒ»¸öjob kill %2 ÖÕÖ¹ÔÚbackgroundÖеĵڶþ¸öjob
Èý¡¢Ïà¹ØµÄϵͳµ÷ÓÃ
ÔÚLINUXÖÐfork( )ÊÇÒ»¸ö·Ç³£ÓÐÓõÄϵͳµ÷Ó㬵«ÔÚLINUXÖн¨Á¢½ø³Ì³ýÁËfork( )Ö®Í⣬Ҳ¿ÉÓÃÓëfork( ) ÅäºÏʹÓõÄexec( )¡£
1¡¢exec( )ϵÁÐ
ϵͳµ÷ÓÃexec( )ϵÁУ¬Ò²¿ÉÓÃÓÚгÌÐòµÄÔËÐС£fork( )Ö»Êǽ«¸¸½ø³ÌµÄÓû§¼¶ÉÏÏÂÎÄ¿½±´µ½Ð½ø³ÌÖУ¬¶øexec( )ϵÁпÉÒÔ½«Ò»¸ö¿ÉÖ´ÐеĶþ½øÖÆÎļþ¸²¸ÇÔÚнø³ÌµÄÓû§¼¶ÉÏÏÂÎĵĴ洢¿Õ¼äÉÏ£¬ÒÔ¸ü¸Äнø³ÌµÄÓû§¼¶ÉÏÏÂÎÄ¡£exec( )ϵÁÐÖеÄϵͳµ÷Óö¼Íê³ÉÏàͬµÄ¹¦ÄÜ£¬ËüÃǰÑÒ»¸öгÌÐò×°ÈëÄڴ棬À´¸Ä±äµ÷Óýø³ÌµÄÖ´ÐдúÂ룬´Ó¶øÐγÉнø³Ì¡£Èç¹ûexec( )µ÷Óóɹ¦£¬µ÷Óýø³Ì½«±»¸²¸Ç£¬È»ºó´ÓгÌÐòµÄÈë¿Ú¿ªÊ¼Ö´ÐУ¬ÕâÑù¾Í²úÉúÁËÒ»¸öнø³Ì£¬Ð½ø³ÌµÄ½ø³Ì±êʶ·ûid Óëµ÷Óýø³ÌÏàͬ¡£
exec( )ûÓн¨Á¢Ò»¸öÓëµ÷Óýø³Ì²¢·¢µÄ×Ó½ø³Ì£¬¶øÊÇÓÃнø³ÌÈ¡´úÁËÔÀ´½ø³Ì¡£ËùÒÔexec( )µ÷Óóɹ¦ºó£¬Ã»ÓÐÈκÎÊý¾Ý·µ»Ø£¬ÕâÓëfork( )²»Í¬¡£exec( )ϵÁÐϵͳµ÷ÓÃÔÚLINUXϵͳ¿âunistd.hÖУ¬¹²ÓÐexecl¡¢execlp¡¢execle¡¢execv¡¢execvpÎå¸ö£¬Æä»ù±¾¹¦ÄÜÏàͬ£¬Ö»ÊÇÒÔ²»Í¬µÄ·½Ê½À´¸ø³ö²ÎÊý¡£
Ò»ÖÖÊÇÖ±½Ó¸ø³ö²ÎÊýµÄÖ¸Õ룬È磺 int execl(path,arg0[,arg1,...argn],0); char *path,*arg0,*arg1,...,*argn;
ÁíÒ»ÖÖÊǸø³öÖ¸Ïò²ÎÊý±íµÄÖ¸Õ룬È磺 int execv(path,argv); char *path,*argv[ ];
ÁíÍ⣬ÔÚlinuxÖУ¬³öÓÚ°²È«µÄ¿¼ÂÇ£¬ÏÞÖÆÁËexec()¿ÉÒÔÖ´ÐеÄгÌÐòµÄλÖÃΪϵͳָ¶¨µÄËÑË÷·¾¶¡£
ÀýÈ磺
execl(¡°/bin/ls¡±,¡±ls¡±,NULL);
execl(¡°/usr/bin/gcc¡±,¡±-v¡±,NULL);
execl(¡°./test¡±,NULL); //µ±Ç°Ä¿Â¼ÏµĿÉÖ´ÐгÌÐò 2¡¢exec( )ºÍfork( )ÁªºÏʹÓÃ
11
¹²·ÖÏí92ƪÏà¹ØÎĵµ