linux½ø³Ì¿ØÖÆ£execϵÁÐ execϵͳµ÷ÓÃ
linux½ø³Ì¿ØÖÆ£execϵÁР˵ÊÇexecϵͳµ÷Óã¬Êµ¼ÊÉÏÔÚLinuxÖУ¬²¢²»´æÔÚÒ»¸öexec()µÄº¯ÊýÐÎʽ£¬execÖ¸µÄÊÇÒ»×麯Êý£¬Ò»¹²ÓÐ6¸ö£¬·Ö±ðÊÇ£º #include <unistd.h>
int execl(const char *path, const char *arg, ...);
int execlp(const char *file, const char *arg, ...);
int execle(const char *path, const char *arg, ..., char *const envp[]);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);
int execve(const char *path, char *const argv[], char *const envp[]);
ÆäÖÐÖ»ÓÐexecveÊÇÕæÕýÒâÒåÉϵÄϵͳµ÷Óã¬ÆäËü¶¼ÊÇÔÚ´Ë»ù´¡ÉϾ¹ý°ü×°µÄ¿âº¯Êý¡£
execº¯Êý×åµÄ×÷ÓÃÊǸù¾ÝÖ¸¶¨µÄÎļþÃûÕÒµ½¿ÉÖ´ÐÐÎļþ£¬²¢ÓÃËüÀ´È¡´úµ÷Óýø³ÌµÄÄÚÈÝ£¬»»¾ä»°Ëµ£¬¾ÍÊÇÔÚµ÷Óýø³ÌÄÚ²¿Ö´ÐÐÒ»¸ö¿ÉÖ´ÐÐÎļþ¡£ÕâÀïµÄ¿ÉÖ´ÐÐÎļþ¼È¿ÉÒÔÊǶþ½øÖÆÎļþ£¬Ò²¿ÉÒÔÊÇÈκÎLinuxÏ¿ÉÖ´ÐеĽű¾Îļþ¡£
Óë Ò»°ãÇé¿ö²»Í¬£¬execº¯Êý×åµÄº¯ÊýÖ´Ðгɹ¦ºó²»»á·µ»Ø£¬ÒòΪµ÷Óýø³ÌµÄʵÌ壬°üÀ¨´úÂë¶Î£¬Êý¾Ý¶ÎºÍ¶ÑÕ»µÈ¶¼ÒѾ±»ÐµÄÄÚÈÝÈ¡´ú£¬Ö»ÁôϽø³ÌIDµÈһЩ±í ÃæÉϵÄÐÅÏ¢ÈÔ±£³ÖÔÑù£¬ÆÄÓÐЩÉñËÆ"ÈýÊ®Áù¼Æ"ÖеÄ"½ð²õÍÑ¿Ç"¡£¿´ÉÏÈ¥»¹ÊǾɵÄÇû¿Ç£¬È´ÒѾעÈëÁËеÄÁé»ê¡£Ö»Óе÷ÓÃʧ°ÜÁË£¬ËüÃDzŻ᷵»ØÒ»¸ö-1£¬´Ó Ô³ÌÐòµÄµ÷Óõã½Ó×ÅÍùÏÂÖ´ÐС£
ÏÖÔÚÎÒÃÇÓ¦¸ÃÃ÷°×ÁË£¬LinuxÏÂÊÇÈçºÎÖ´ÐÐгÌÐòµÄ£¬Ã¿µ±Óнø³ÌÈÏΪ×Ô¼º²»ÄÜΪϵͳ ºÍÓµ»¤×ö³öÈκι±Ï×ÁË£¬Ëû¾Í¿ÉÒÔ·¢»Ó×îºóÒ»µãÓàÈÈ£¬µ÷ÓÃÈκÎÒ»¸öexec£¬ÈÃ×Ô¼ºÒÔеÄÃæÃ²ÖØÉú£»»òÕߣ¬¸üÆÕ±éµÄÇé¿öÊÇ£¬Èç¹ûÒ»¸ö½ø³ÌÏëÖ´ÐÐÁíÒ»¸ö³ÌÐò£¬ Ëü¾Í¿ÉÒÔfork³öÒ»¸öнø³Ì£¬È»ºóµ÷ÓÃÈκÎÒ»¸öexec£¬ÕâÑù¿´ÆðÀ´¾ÍºÃÏñͨ¹ýÖ´ÐÐÓ¦ÓóÌÐò¶ø²úÉúÁËÒ»¸öнø³ÌÒ»Ñù¡£
Ê ʵÉϵڶþÖÖÇé¿ö±»Ó¦ÓõÃÈç´ËÆÕ±é£¬ÒÔÖÁÓÚLinuxרÃÅΪÆä×÷ÁËÓÅ»¯£¬ÎÒÃÇÒѾ֪µÀ£¬fork»á½«µ÷Óýø³ÌµÄËùÓÐÄÚÈÝÔ·â²»¶¯µÄ¿½±´µ½Ð²úÉúµÄ×Ó½ø³ÌÖРȥ£¬ÕâЩ¿½±´µÄ¶¯×÷ºÜÏûºÄʱ¼ä£¬¶øÈç¹ûforkÍêÖ®ºóÎÒÃÇÂíÉϾ͵÷ÓÃexec£¬ÕâЩÐÁÐÁ¿à¿à¿½±´À´µÄ¶«Î÷ÓֻᱻÁ¢¿ÌĨµô£¬Õâ¿´ÆðÀ´·Ç³£²»»®Ë㣬ÓÚÊÇÈËÃÇÉè ¼ÆÁËÒ»ÖÖ"дʱ¿½±´£¨copy-on-write£©"¼¼Êõ£¬Ê¹µÃfork½áÊøºó²¢²»Á¢¿Ì¸´ÖƸ¸½ø³ÌµÄÄÚÈÝ£¬¶øÊǵ½ÁËÕæÕýʵÓõÄʱºò²Å¸´ÖÆ£¬ÕâÑùÈç¹ûÏÂÒ»Ìõ Óï¾äÊÇexec£¬Ëü¾Í²»»á°×°××÷ÎÞÓù¦ÁË£¬Ò²¾ÍÌá¸ßÁËЧÂÊ¡£
/* exec.c */
#include <unistd.h>
main()
{
char *envp[]={"PATH=/tmp",
"USER=lei",
Ïà¹ØÎĵµ£º
ÀýÒ»£º·¢ËÍSignaling Packet£º
Signaling CommandÊÇ2¸öBluetoothʵÌåÖ®¼äµÄL2CAP²ãÃüÁî´«Êä¡£ËùÒÔµÃSignaling CommandʹÓÃCID 0x0001.
¶à¸öCommand¿ÉÒÔÔÚÒ»¸öC-frame£¨control frame£©Öз¢ËÍ¡£
Èç¹ûÒªÖ±½Ó·¢ËÍSignaling Command.ÐèÒª½¨Á¢SOCK_RAWÀàÐ͵ÄL2CAPÁ¬½ÓSocket¡£ÕâÑù²ÅÓлú»á×Ô¼ºÌî³äCommand Code£¬Identi ......
֮ǰ·¢¹ýһƪÔÚWindowsϰ²×°TracµÄ·½·¨£¬²»¹ýTrac¸ü¶àµÄÊÇÔÚLinuxÏÂʹÓã¬
ËùÒÔÕâÀï½éÉÜÒ»ÏÂÔÚLinuxϵݲװ·½·¨¡£Ê±¹ý¾³Ç¨£¬TracÏÖÔÚÒÑÕýʽ·¢²¼ÁË0.11°æ£¬
Óë֮ǰµÄ0.9¡¢0.10Ïà±È£¬Õâ¸ö°æ±¾µÄ´úÂëä¯ÀÀÆ÷Ôö¼ÓÁËÐí¶à¹¦ÄÜ£¬
×îºÃÓõľÍÊÇËüÖ§³ÖsubversionµÄBlameÁË£¬¿ÉÒԲ鿴µ½Ô´´úÂëµÄÿһÐÐÊÇÔÚÄĸö°æ±¾ÓÉËÐ޸ĵġ£
Õ ......
ÉùÃ÷£º¸ÃÎļþÊǶÔÎÒ2009Äê×îºóÁ½ÖÜѧϰ¹ý³ÌµÄ×ܽᣬϣÍûÄܰïÖúµ½Ñ§Ï°ÖеÄÈËÃÇ¡£¸ÃÎĵµ°´ÕÕµ±Ç°ÈÕÆÚµÄ×îаæGPLÐÒé·¢²¼¡£»¶Ó×ªÔØ£¬µ«Ðë×¢Ã÷×÷Õß¼°³ö´¦¡£
×÷ÕߣºJim Zheng¡£½Ó´¥Linux 4Ä꣬µ«ÊÇÒ»Ö±´¦ÓÚ×Ôѧ״̬£¬Ã»Óлú»á²ÎÓëLinuxƽ̨µÄ²úÆ·¿ª·¢¡£ºÜÏ£ÍûÄÜÓÃÉÏLinuxƽ̨×÷ʵ¼Ê¿ª·¢¡£ÁªÏµ·½Ê½:zhengweishang@google.com
......
×î½üÒ»Ö±¿àÐÄÑо¿»ùÓÚÍøÂç¹ÜÀí·½ÃæµÄÓ¦Óã¬Ñ¸À×µÈÏÂÔØÈí¼þ¸øÃ»Óи߶ËÉ豸µÄÍøÂç´øÀ´ÁËÂé·³¡£¹«Ë¾µÄCISCO 2811 ²»ÄÜÓÃÀ´×öÁ÷¿Ø£¬ºóÀ´ÔÚWINDOWS Óò¿ØÉÏ×öÁËÒ»¸öÁ÷¿Ø£¬µ«ÊÇÐèÒª¹Ø±Õ¾ÖÓòÍøÖмÆËã»úµÄ¶Ë¿Ú£¨³ýÆóÒµÓ¦ÓÃÖ®ÍâµÄ£©£¬ºóÀ´ÓÃËû×ö·À»ðǽ¶¼×½½ó¼ûÖ⣬ÈÃÈËʵÔÚÊÇÎÞ·¨ÈÌÊÜ£¬³ýÁËÒ»¸ö ......
linuxĿ¼¼Ü¹¹
/ ¸ùĿ¼
/bin ³£ÓõÄÃüÁî binary file µÄÄ¿錄
/boot ´æ·ÅϵͳÆô¶¯Ê±±ØÐë¶ÁÈ¡µÄµµ°¸£¬°üÀ¨ºËÐÄ (kernel) ÔÚÄÚ
/boot/grub/menu.lst GRUBÉèÖÃ
/boot/vmlinuz ÄÚºË
&nbs ......