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"
Ïà¹ØÎĵµ£º
Ò»£ºÇ°ÑÔ
×î½üÔÚÑо¿androidµÄsensor driver£¬Ö÷ÒªÊÇE-compass£¬ÆäÖÐÓõ½ÁËLinux input×Óϵͳ.ÔÚÍøÉÏÒ²¿´Á˺ܶàÕâ·½ÃæµÄ×ÊÁÏ£¬¸Ð¾õ»¹ÊÇÕâƪ·ÖÎöµÄ±È½ÏϸÖÂ͸³¹£¬Òò´ËתÔØÒ»ÏÂÒÔ±ã×Ô¼ºÑ§Ï°£¬Í¬Ê±ºÍ´ó¼Ò·ÖÏí£¡
£¨Õâƪ²©¿ÍÖ÷ÒªÊÇÒÔ¼üÅÌÇý¶¯ÎªÀýµÄ£¬²»¹ý½²½âµÄÊÇLinux Input Subsystem£¬¿ÉÒÔ×ÐϸµÄÑо¿Ò»Ï£¡£©
¼üÅÌÇý¶¯½«¼ì ......
/******************************
*
* server.c
*
******************************/
#include<stdio.h>
#include<stdlib.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<errno.h>
#include<string.h>
#include<netinet/in.h>
#include<sys/wait.h> ......
class CTimeTickCount
{
public:
CTimeTickCount(int threadIndex, int id )
{
struct timezone tz;
gettimeofday(&m_tvStartTime, &tz);
// m_tmStartTime = ACE_OS::gettimeofday();
m_iThreadIndex ......
´æ´¢¹ÜÀí
MMUÓëÄÚºËÄÚ´æ¹ÜÀíµÄ¹Øϵ
´ÓÏßÐÔµØÖ·µ½ÎïÀíµØÖ·µÄÓ³É䣬ͨ¹ýҳĿ¼±íºÍÒ³±íÀ´ÊµÏֵġ£
ÄÚºËΪ´æ´¢¹ÜÀíά»¤ÁËÒ»Ì׸´ÔÓµÄÊý¾Ý½á¹¹£¬Ò³Ä¿Â¼±íºÍÒ³±íÊÇÖ÷ÒªµÄ½á¹¹Ö®Ò»¡£ÕâЩ±íÒ²ÊÇ´æ´¢ÔÚÎïÀíÄÚ´æÒ³ÃæÖеģ¬Òò´Ë£¬Ò²ÊÇÒÔ4KΪµ¥Î»¡£
±íÖеÄÿ¸ö±íÏ¼Ç¼ÁËÒ»¸ö32λµÄµØÖ·£¬Îª4¸ö×Ö½Ú£¬Òò´Ë£¬Ò»¸ö±íÖÐ×î¶à¿ÉÒÔÓÐ1KÏî ......
LinuxÖÐÎÄÂÒÂëÎÊÌâ
×î½ü£¬¹«Ë¾ÔÚXPϵͳÓÚLINUXÖ®¼ä´«Êý¾Ýʱ³öÏÖÁËÖÐÎÄÂÒÂëÎÊÌâ!
Ê×ÏÈ£¬½âÊÍÒ»ÏÂ×Ö·û¼¯£º
ºº×Ö±àÂë:
* GB2312×Ö¼¯ÊǼòÌå×Ö¼¯£¬È«³ÆΪGB2312(80)×Ö¼¯£¬¹²°üÀ¨¹ú±ê¼òÌ庺×Ö6763¸ö¡£ *
BIG5×Ö¼¯ÊÇ̨Íå·±Ìå×Ö¼¯£¬¹²°üÀ¨¹ú±ê·±Ì庺×Ö13053¸ö¡£ *
GBK×Ö¼¯ÊǼò·±×Ö¼¯£¬°üÀ¨ÁËGB×Ö¼¯¡¢BIG5×Ö¼¯ºÍһЩ·ûºÅ£ ......