Linux½âÊÍÆ÷Ô­Àí

×÷Õß: thej 2005-11-23 12:02:02
ÒýÑÔ
ʹÓÃShell½øÐй¤×÷µÄÈËÃǶÔUnix/LinuxϵÄShell±à³Ì¶¼ºÜÊìϤ£¬ÔÚËùÓеÄShell±à³ÌµÄÊéÖж¼»áÌáµ½#!/bin/bash,¶øÕâÀïµ½µ×°üº¬ÁËЩʲô£¿¶Ô²Ù×÷ϵͳ¶øÑÔ£¬ÕâÒ»ÐÐ×Ö·û´®Òâζ×Åʲô£¿Äã¿ÉÄÜ»á˵£¬²»¾ÍÊÇ»áÈÃ/bin/bash³ÌÐòÀ´½âÊÍÕâ¸ö½Å±¾³ÌÐòÂ𣿵±È»ÄãÊǶԵģ¬¿´¿´ÎÒÃǵıêÌ⣬ÕâÀïÎÒÃÇ̸̸½âÊÍÆ÷£¬ÈÃÎÒÃÇÒ»ÆðÀ´¿´¿´½Å±¾ÎļþÀïµÄµÚÒ»¾äµ½µ×¶Ôϵͳ¶øÑÔÒâζ×Åʲô¡£µ«ÓÐÒ»µãÎÒÃÇ¿ÉÏÈÃ÷ȷһϣ¬Ëùν½âÊÍÆ÷¾ÍÊÇÖ¸#!ÐкóÃæµÄ¿ÉÖ´ÐеijÌÐò¡£

Ò»¡¢ÎÒÃÇ´Óexec×庯Êý̸Æð
Èç¹ûÄã´Ó²»Ð´C³ÌÐò£¬¿ÉÄÜÐèÒª¶Ô±¾½ÚµÄÄÚÈÝ¿´µÃ¸üΪ×Ðϸ²¢ÇÒÊÔÑéһϡ£

´úÂë:
#include

extern char **environ;

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[]);

exec×庯ÊýÒ»¹²ÓÐÉÏÃæËùÁеÄ5¸ö£¬×÷Óö¼ÊÇÒ»Ñù£ºÖ´ÐÐÒ»¶ÎеĴúÂë¡£Çø±ðÖ»ÊÇÏòº¯Êý´«µÝµÄ²ÎÊý·½Ê½²»Í¬¶øÒÑ£¬ÎÒÔÚÕâÀï½²½²execlº¯Êý£ºµÚÒ»¸ö²ÎÊý pathÊÇÖ¸ÏòÉèÖÃÁËÖ´ÐÐλÎļþµÄ·¾¶£¬ºóÃæµÄ¿É±ä²ÎÊýÁбí·Ö±ðÖ¸ÏòÁË´«µÝ¸ø´ËÖ´ÐÐÎļþµÄ²ÎÊýÁбí(°üÀ¨Á˲ÎÊý0,¼´ÊÇÖ´ÐÐÎļþµÄÃû³Æ)¡£×îºóÒ»¸ö²ÎÊýΪ (char *) 0£¬±íʾ²ÎÊýÁбí½áÊø¡£

¶ÔÓÚ½âÊÍÆ÷£¬exec×庯ÊýÊÇÕâÑù×öµÄ(ÒÔexeclΪÀý)£¬Èç¹ûpathÊÇÖ¸ÏòÁËÒ»¸ö½Å±¾£¬½Å±¾µÄµÚÒ»ÐÐÒÔ#!¿ªÍ·£¬ÔòÕâÑùµ÷Óãº
ÒÔ#!ºóÃæµÄ×Ö·û´®ÎªÃüÁºóÃæ¼ÓÉÏexecl²ÎÊýÁбíÖÐÖ¸¶¨µÄ²ÎÊýÁÐ±í£¬ÕâÑùÐγÉÁËеijÌÐòÖ´ÐС£
ÏÂÃæÎÒÃÇÒÔÀý×ÓÀ´ÑéÖ¤Õâ¸ö½á¹û£º

ÏÂÃæÕâ¸öC³ÌÐòµÄ×÷ÓÃÊÇ»ØÉäËùÓÐÃüÁîÐвÎÊý¡£

´úÂë:
/* Program source : showargs.c *
* Program name : showargs */

#include

int
main(int argc, char *argv[])
{
int i;
for(i = 0; i < argc; i++)
{
printf("arg[%d]: %s\n", i, argv[i]);
}
return 0;
}

Ïà¹Ø×ÊѶ