锘??xml version="1.0" encoding="utf-8" standalone="yes"?>国语自产在线不卡,制服丝袜激情欧洲亚洲,蜜臀91精品一区二区三区 http://m.shnenglu.com/SysProgrammer/Memory Layout...... zh-cn Sat, 04 Oct 2025 01:42:07 GMT Sat, 04 Oct 2025 01:42:07 GMT 60 鍒╃敤綆¢亾瀵硅繘紼嬮噸瀹氬悜 http://m.shnenglu.com/SysProgrammer/archive/2010/05/25/116333.htmlReno Reno Tue, 25 May 2010 15:07:00 GMT http://m.shnenglu.com/SysProgrammer/archive/2010/05/25/116333.html http://m.shnenglu.com/SysProgrammer/comments/116333.html http://m.shnenglu.com/SysProgrammer/archive/2010/05/25/116333.html#Feedback 0 http://m.shnenglu.com/SysProgrammer/comments/commentRss/116333.html http://m.shnenglu.com/SysProgrammer/services/trackbacks/116333.html 涓涓閬撴湁璇葷鍜屽啓绔?褰撲綘鎶婅繖涓閬撳拰涓涓繘紼嬫惌鎺ヨ搗鏉ョ殑鏃跺?鍙互鐢ㄨ繖涓閬撳綋浣滆緭鍏?涔熷彲浠ョ敤榪欎釜綆¢亾褰撲綔杈撳嚭,濡傛灉鏄鍚戠閬撹緭鍏?鍒欐暟鎹緭鍏ョ鏄啓绔?鍙︿竴绔槸璇葷,濡傛灉鏄敱綆¢亾杈撳嚭,鍒欑敱榪涚▼鍐欏叆綆¢亾,鏄啓绔?鍙︿竴绔槸璇葷,涔熷氨鏄帴鏀惰繘紼嬬殑杈撳嚭鏁版嵁鐨勪竴绔?鍥犳濡傛灉瑕侀噸瀹氬悜榪涚▼鐨勮緭鍏ュ拰杈撳嚭,鍒欓渶瑕?鏍圭閬? 浠ヤ笅浠g爜婕旂ず浜?jiǎn)鍒涘缓CMD.EXE榪涚▼,騫剁敤2鏍圭閬撻噸瀹氬悜浠栫殑杈撳叆杈撳嚭,騫惰鍙朇MD浜х敓鐨勭粨鏋滄暟鎹?鍗冧竾涓嶈蹇樿璁劇疆SECURITY_ATTRIBUTES閲岀殑bInheritHandle,姣斿鍒涘緩綆¢亾鐨勬椂鍊欒鎶奲InheritHandle璁劇疆涓篢RUE
鍚屾牱涓嶄竴瀹氳鐢ㄧ閬?姣斿鏂囦歡,SOCKET絳夐兘鍙互閲嶅畾鍚? 濡傛灉鏄敤SOCKET,鏍規(guī)嵁緗戜笂鐨勫悕璇?鍙互鍒涘緩涓涓?闆剁閬撳悗闂?紼嬪簭.姣斿鍦ㄦ湇鍔″櫒绔笂鐨勫悗闂ㄧ▼搴忕洃鍚煇涓鍙?涓鏃︽湁榪炴帴璇鋒眰,鎺ュ彈鍚庡垱寤篠OCKET,灝卞湪榪欎釜鏃跺欏紑鍚疌MD.EXE,騫墮噸瀹氬悜杈撳叆杈撳嚭鍒版湇鍔″櫒涓婄殑榪欎釜SOCKET,榪欐牱渚夸負(fù)榪滅▼鐨勮繖涓繛鎺ヨ姹傚紑浜?jiǎn)涓涓湇鍔″櫒涓婄殑鍚庨棬錛屼粠鑰岃繙紼嬭繛鎺ュ彲浠ユ墽琛屾湇鍔″櫒騫惰繑鍥炵粨鏋? 婕旂ず浠g爜濡備笅: // // File: Main.cpp // Purpose: Creates a process( cmd.exe for example ), and redirect its standard input // by using creating a pipe, then writes some bytes as commands to pipe. // #define WIN32_LEAN_AND_MEAN #include <windows.h>
#include <stdio.h> #include <stdlib.h>
// Error report void Error( const char *szErrMsg );
int main( int argc, char **argv ) { // Create pipe BOOL bRet; HANDLE hPipeRead, hPipeWrite; HANDLE hPipeReadII, hPipeWriteII; SECURITY_ATTRIBUTES sa; sa.nLength = sizeof( SECURITY_ATTRIBUTES ); sa.bInheritHandle = TRUE; sa.lpSecurityDescriptor = NULL; bRet = ::CreatePipe( &hPipeRead, &hPipeWrite, &sa, 512 ); bRet &= ::CreatePipe( &hPipeReadII, &hPipeWriteII, &sa, 512 ); if ( !bRet ) { Error( "Can't create pipe!" ); return -1; } // Spawn a process STARTUPINFO StartInfo; PROCESS_INFORMATION ProcessInfo; // memset( &StartInfo, 0, sizeof(StartInfo) ); // memset( &ProcessInfo, 0, sizeof(ProcessInfo) ); ::GetStartupInfo( &StartInfo ); StartInfo.cb = sizeof(StartInfo); StartInfo.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES; StartInfo.wShowWindow = SW_HIDE; StartInfo.hStdInput = hPipeRead; StartInfo.hStdOutput = hPipeWriteII; //::GetStdHandle( STD_OUTPUT_HANDLE ); StartInfo.hStdError = hPipeWriteII; //::GetStdHandle( STD_OUTPUT_HANDLE ); bRet = ::CreateProcess( TEXT("c:\\windows\\system32\\cmd.exe"), NULL, NULL, NULL, TRUE, 0, NULL, NULL, &StartInfo, &ProcessInfo ); ::Sleep(1000); printf("wake up...\n"); if ( !bRet ) { Error( "Can't create process!" ); return -1; } // Write commands to pipe char *szCmd = "netstat\r\n"; DWORD dwDummy; ::WriteFile( hPipeWrite, szCmd, 10, &dwDummy, NULL ); ::Sleep(2000); printf("had written...\n"); // Read from pipe char szBuf[1024]; memset(szBuf, 0, sizeof(szBuf)); ::ReadFile( hPipeReadII, szBuf, sizeof(szBuf), &dwDummy, NULL ); // Don't leave till the spawned process goes end // ::Sleep(2000); printf("had read...\n"); // ::WaitForSingleObject( ProcessInfo.hProcess, INFINITE ); printf("%s\n", szBuf);
return 0; }
void Error( const char *szErrMsg ) { printf( "Error: %s\n", szErrMsg ); }
鍦╓inXP SP2 + VS 2005 Express Edition涓婄紪璇戝茍榪愯閫氳繃 榪欎釜鐗堟湰鐨刅S闇瑕佷笅杞藉茍璁劇疆Platform SDK,騫跺彟澶栨壘涓涓狹SVCRT80D.DLL濡傛灉鏄疍EBUG鐗堟湰鐨凞LL,騫惰緗?br>鍖呭惈鍜岄摼鎺ョ洰褰曞拰閾炬帴鍣ㄥ懡浠よ(user32,kernel32,libcmt)
]]>絎?涓畝鍗曠殑璇█ http://m.shnenglu.com/SysProgrammer/archive/2009/12/24/104001.htmlReno Reno Thu, 24 Dec 2009 15:51:00 GMT http://m.shnenglu.com/SysProgrammer/archive/2009/12/24/104001.html http://m.shnenglu.com/SysProgrammer/comments/104001.html http://m.shnenglu.com/SysProgrammer/archive/2009/12/24/104001.html#Feedback 3 http://m.shnenglu.com/SysProgrammer/comments/commentRss/104001.html http://m.shnenglu.com/SysProgrammer/services/trackbacks/104001.html // Unnamed simple script language products define as the flowing: program ::= declaration_list declaration_list ::= var_declaration | fun_declaration var_declaration ::= DECLARE type_specifier_list ID; END type_specifier_list ::= type_specifier type_specifier_list | EMPTY type_specifier ::= VAR fun_declaration ::= BEGIN statement_list END statement_list ::= statement statement_list | EMPTY statement ::= expression_stmt | compund_list | selection_stmt | iteration_stmt expression_stmt ::= expression; | ; compund_list ::= { statement_list } selection_stmt :: IF ( expression ) statement | IF ( expression ) statement ELSE statement ireation_stmt ::= WHILE ( expression ) statement expression ::= var = expression | simple_expression var ::= ID simple_expression ::= additive_expression relop additive_expression | additive_expression relop ::= <= | < | > | >= | == | != additive_expression ::= additive_expression addop term | term addop ::= + | - term ::= term mulop factor | factor mulop ::= * | / factor ::= ( expression ) | var | NUM
]]>ConsoleMain.cpp http://m.shnenglu.com/SysProgrammer/archive/2009/12/23/103848.htmlReno Reno Wed, 23 Dec 2009 14:03:00 GMT http://m.shnenglu.com/SysProgrammer/archive/2009/12/23/103848.html http://m.shnenglu.com/SysProgrammer/comments/103848.html http://m.shnenglu.com/SysProgrammer/archive/2009/12/23/103848.html#Feedback 0 http://m.shnenglu.com/SysProgrammer/comments/commentRss/103848.html http://m.shnenglu.com/SysProgrammer/services/trackbacks/103848.html
1 #include < stdio.h > 2 #include < string .h > 3 #include " PathInterpreter.h " 4 5 int main( int argc, char * argv[] ) 6 { 7 if ( argc < 2 ) 8 { 9 printf( " Usage: ExecuableFileName ScriptFileName [-DEBUG|-debug] \n " ); 10 return 0 ; 11 } 12 13 if ( argc > 3 ) 14 { 15 printf( " Warning: More parameters have expected, after the third has ignored!\n " ); 16 return 0 ; 17 } 18 19 CPathInterpret Instance; 20 Instance.LoadScript( argv[ 1 ] ); 21 if ( argc == 3 ) 22 { 23 if ( strcmp( argv[ 2 ], " -DEBUG " ) == 0 || strcmp( argv[ 2 ], " -debug " ) == 0 ) 24 Instance.Interpret( CPathInterpret::DEBUG ); 25 else 26 printf( " Warning: Unknown about the third parameter!\n " ); 27 } 28 else 29 Instance.Interpret(); 30 31 return 0 ; 32 } 33 34
]]> PathInterpreter.h http://m.shnenglu.com/SysProgrammer/archive/2009/12/23/103847.htmlReno Reno Wed, 23 Dec 2009 14:03:00 GMT http://m.shnenglu.com/SysProgrammer/archive/2009/12/23/103847.html http://m.shnenglu.com/SysProgrammer/comments/103847.html http://m.shnenglu.com/SysProgrammer/archive/2009/12/23/103847.html#Feedback 0 http://m.shnenglu.com/SysProgrammer/comments/commentRss/103847.html http://m.shnenglu.com/SysProgrammer/services/trackbacks/103847.html
1 #ifndef PATH_INTERPRETER 2 #define PATH_INTERPRETER 3 4 #define WIN32_LEAN_AND_MEAN 5 #include < windows.h > 6 #include < string .h > 7 #include < stdlib.h > 8 #include < ctype.h > 9 #include < string > 10 #include < list > 11 12 using std:: string ; 13 using std::list; 14 15 #define MAX_WORD_LEN 8 // 8 Bytes 16 17 class ContexScan; 18 19 // CPathScriptLoader 20 class CPathScriptLoader 21 { 22 public : 23 string Context; 24 25 void LoadScript( const char * szFile ); 26 }; 27 28 // 29 // Contex Lex 30 // 31 // 32 // ContexScan 33 class ContexScan 34 { 35 public : 36 enum ScanState { WORD, NOPRINT, }; 37 38 public : 39 ContexScan(); 40 ~ ContexScan(); 41 42 void SetExpression( const char * szExpr ); 43 44 bool SkipWord( const char * szWord ); 45 char * GetNextWord(); 46 char * CurrentWord() { return m_szCurrWord; } 47 bool NextWord(); 48 void RebackWordByCount( int n ); // 閫鍑犱釜? 49 void RebackNearestWordByName( const char * szWord ); // 閫鍒板摢涓? 50 51 private : 52 char * m_szExpr; 53 char * m_pLastChar; 54 char * m_pCurrChar; 55 char m_szCurrWord[MAX_WORD_LEN]; 56 ScanState m_eState; 57 }; 58 59 // 60 // Syntax Tree Nodes 61 // 62 // AbstractNode 63 class AbstractNode 64 { 65 public : 66 AbstractNode( ContexScan & contex ); 67 virtual ~ AbstractNode(); 68 69 virtual void Parse() = 0 ; 70 71 protected : 72 ContexScan & m_RefContexScan; 73 list < AbstractNode *> m_Nodes; 74 }; 75 76 // ProgramNode 77 class ProgramNode : public AbstractNode 78 { 79 public : 80 ProgramNode( ContexScan & contex ); 81 virtual ~ ProgramNode(); 82 83 virtual void Parse(); 84 }; 85 86 // CommandListNode 87 class CommandListNode : public AbstractNode 88 { 89 public : 90 CommandListNode( ContexScan & contex ); 91 virtual ~ CommandListNode(); 92 93 virtual void Parse(); 94 }; 95 96 // CommandNode 97 class CommandNode : public AbstractNode 98 { 99 public : 100 CommandNode( ContexScan & contex ); 101 virtual ~ CommandNode(); 102 103 virtual void Parse(); 104 }; 105 106 // RepeatNode 107 class RepeatNode : public AbstractNode 108 { 109 public : 110 RepeatNode( ContexScan & contex ); 111 virtual ~ RepeatNode(); 112 113 virtual void Parse(); 114 }; 115 116 // BlockNode 117 class BlockNode : public AbstractNode 118 { 119 public : 120 BlockNode( ContexScan & contex ); 121 virtual ~ BlockNode(); 122 123 virtual void Parse(); 124 }; 125 126 // PrimitiveNode 127 class PrimitiveNode : public AbstractNode 128 { 129 public : 130 PrimitiveNode( ContexScan & contex ); 131 virtual ~ PrimitiveNode(); 132 133 virtual void Parse(); 134 }; 135 136 // CPathInterpret 137 // The Interpreter Facade interface 138 class CPathInterpret 139 { 140 public : 141 enum InterpretMode { NDEBUG, DEBUG, }; 142 143 public : 144 static InterpretMode m_Mode; 145 146 public : 147 void LoadScript( const char * szFile ); 148 void Interpret( InterpretMode mode = NDEBUG ); 149 150 private : 151 CPathScriptLoader m_ScriptLoader; 152 ContexScan m_ContexScaner; 153 154 }; 155 156 #endif // PATH_INTERPRETER 157
]]> PathInterpreter.cpp http://m.shnenglu.com/SysProgrammer/archive/2009/12/23/103842.htmlReno Reno Wed, 23 Dec 2009 13:57:00 GMT http://m.shnenglu.com/SysProgrammer/archive/2009/12/23/103842.html http://m.shnenglu.com/SysProgrammer/comments/103842.html http://m.shnenglu.com/SysProgrammer/archive/2009/12/23/103842.html#Feedback 0 http://m.shnenglu.com/SysProgrammer/comments/commentRss/103842.html http://m.shnenglu.com/SysProgrammer/services/trackbacks/103842.html 闃呰鍏ㄦ枃 ]]> 榪愬姩璺嚎鎺у埗鑴氭湰璇█ http://m.shnenglu.com/SysProgrammer/archive/2009/12/23/Reno.htmlReno Reno Wed, 23 Dec 2009 08:58:00 GMT http://m.shnenglu.com/SysProgrammer/archive/2009/12/23/Reno.html http://m.shnenglu.com/SysProgrammer/comments/103817.html http://m.shnenglu.com/SysProgrammer/archive/2009/12/23/Reno.html#Feedback 2 http://m.shnenglu.com/SysProgrammer/comments/commentRss/103817.html http://m.shnenglu.com/SysProgrammer/services/trackbacks/103817.html 鏈榪戝湪鍋氫豢闆風(fēng)數(shù)鐨勬父鎴忥紝鍏朵腑鏁屼漢椋炶埞鐨勮繍鍔ㄨ礬綰垮拰鐗瑰緛闇瑕佽兘鐏墊椿鐨勮緗紝騫朵笖灝介噺灝戝姩鍏朵粬閮ㄥ垎鐨勪唬鐮侊紝浜庢槸鎴戠殑鎯蟲(chóng)硶鏄妸姣忕綾誨瀷鐨勯鑸規(guī)寚瀹氱殑榪愬姩璺嚎瀛樺叆鑴氭湰涓紝鐒跺悗鐢卞紩鎿庢牴鎹剼鏈墽琛? 鍥犳鍙互鎶婇鑸圭殑璺嚎鐪嬫垚鏄敱涓緋誨垪鐨勫叧閿偣緇勬垚錛屾瘡涓偣鏈夋瘮濡?涓睘鎬э紝X閫熷害錛孻閫熷害鍜屼繚鎸佽閫熷害鐨勬寔緇椂闂淬傝岃礬綰跨殑榪愬姩杞ㄨ抗鍙互鐢辯畝鍗曠殑鑴氭湰璇█鏉ュ畾涔夛紝姣斿涔熻闇瑕佸湪鏌愬嚑涓偣涔嬮棿閲嶅縐誨姩涓瀹氱殑嬈℃暟銆?/p>
浠ヤ笅鏄竴涓猄cript Demo: GO BEGIN 1.0 0.0 500 END BEGIN -1.0 0.0 500 END REPEAT 4 BEGIN 0.0 1.0 500 END BEGIN 1.0 0.0 500 END BEGIN 0.0 -1.0 500 END BEGIN -1.0 0.0 500 END END END 琛ㄧず鍏堝乏鍙崇Щ鍔ㄤ竴嬈★紝鐒跺悗鍚戜笅錛屽悜鍙籌紝鍚戜笂錛屽悜宸﹀憟鐭╁艦縐誨姩4嬈★紝閫氳繃璁劇疆閫熷害鍒嗛噺鍙互瀹炵幇浠諱綍璺嚎鐨勭Щ鍔ㄤ互鍙?qiáng)鍏朵粬鐗瑰緛銆?br>璇ヨ剼鏈璦瑙i噴鍣ㄩ噰鐢ㄤ簡(jiǎn)2涓璁℃ā寮忥紝Facade鍜孖nterpret妯″紡錛屽叾涓殑瑙i噴鍣ㄤ嬌鐢ㄤ簡(jiǎn)鍑犱箮鍜屼換浣曡璁℃ā寮忎功涓婁粙緇嶇殑涓鏍風(fēng)殑緇撴瀯錛屽緢緇忓吀鍛悀 闄勪笂璇█鐨勬枃娉曞畾涔? program ::= GO command_list command_list ::= command* END command ::= begin_end_block | repeat begin_end_block ::= BEGIN primitive END // Leaf Node on the Syntax tree repeat ::= REPEAT INT command_list primitive ::= SpeedX,SpeedY,Time // Recursive exit // TestScript.txt GO BEGIN 1.0,0.0,500 END BEGIN -1.0,0.0,500 END REPEAT 4 BEGIN 0.0,1.0,500 END BEGIN 0.0,-1.0,500 END END END // Execute result:
]]> 涓浜涢棶棰樼殑瑙e喅鏂規(guī)硶 http://m.shnenglu.com/SysProgrammer/archive/2009/05/06/82061.htmlReno Reno Wed, 06 May 2009 08:27:00 GMT http://m.shnenglu.com/SysProgrammer/archive/2009/05/06/82061.html http://m.shnenglu.com/SysProgrammer/comments/82061.html http://m.shnenglu.com/SysProgrammer/archive/2009/05/06/82061.html#Feedback 0 http://m.shnenglu.com/SysProgrammer/comments/commentRss/82061.html http://m.shnenglu.com/SysProgrammer/services/trackbacks/82061.html 縐頒負(fù)瑙e喅鏂規(guī)硶鏄洜涓鴻繖浜涢棶棰樺疄鍦ㄥお灝忎簡(jiǎn)錛屾柟妗堟牴鏈畻涓嶄笂. 1. 鎯寵鍦╒S2003涓嬪緩绔嬩竴涓」鐩?寮瑰嚭 Automation涓嶈兘鍒涘緩瀵硅薄.GOOGLE鍚?regsvr32 scrrun.dll 娉ㄥ唽鎼炲畾 2. 鎯寵鎵撳紑<<MFC綾誨簱璇﹁В.CHM>>,寮瑰嚭mk@DICTSTORE:your chm file absolute path,鎵撲笉寮,榪欎釜闂鎼炰簡(jiǎn)浼?xì)鏃堕? \ a錛屽彸閿叧鑱攃hm鏂囦歡鐨?#8220;鎵撳紑鏂瑰紡”鍒癨Windows\HH.exe b錛屽湪鍛戒護(hù)琛岃繍琛宺egsvr32 itss.dll c錛屽湪鍛戒護(hù)琛岃繍琛宺egsvr32 hhctrl.ocx 3. 鎶婂師鏉ョ殑VC6欏圭洰縐誨埌VS2003鍚?緙栬瘧鍑虹幇:fatal error C1010: 鍦ㄦ煡鎵鵑緙栬瘧澶存寚浠ゆ椂閬囧埌鎰忓鐨勬枃浠剁粨灝?br> 鍙抽敭鐐歸」鐩悕,閫夋嫨灞炴?鍏堜笉浣跨敤棰勭紪璇戝ご鏂囦歡,鐒跺悗鍐嶆緙栬瘧,OK鍚庡湪閲嶆柊璧風(fēng)敤棰勭紪璇戝ご鏂囦歡.濉啓StdAfx.h $(InitDir)\$(IntDir)/$(TargetName).pch 閬囧埌榪欎簺闂,GOOGLE涓嬭繕鏄潪甯稿鏄撴悶鐨? bwt, 鍓嶅嚑澶╅噸瑁呯郴緇?鐢變簬鎳掔殑瑁匒nti-Virus,灝ゅ叾鏄壂鎻忔椂闂?鍥犳緋葷粺鐥呮瘨鏈夌偣澶氱殑.鍚庨潰褰誨簳闈╂柊,鍙戠幇鎸変互涓嬮『搴忕殑鎵ц鎸囦護(hù),灝卞彲浠ヤ繚鎶ゅソ緋葷粺. 1.涓嬭澆360 2. 鎵撳ソ鎵鏈夐仐婕忚ˉ涓?br> 3. 寮鍚疻INDOWS闃茬伀澧?璧風(fēng)敤鏇存柊 4.寮鍚墍鏈?60淇濇姢 5.涓嬭澆KA宸?鍙互閫氳繃360鐩存帴涓? 6.鏇存柊鐥呮瘨搴撳埌鏈鏂?br> 7.鍏ㄧ郴緇熸壂鎻?璇ユ潃鐨勬潃 鍏徃閲岀殑鐢?shù)鑴戞垜灏睒q欐牱鎵撻?緇撴灉鍛嗕簡(jiǎn)榪?騫?1嬈¢兘娌¢噸瑁?鏈夌偣鎭愭栫殑... 鍙戠幇CPU,鎸囦護(hù)闆嗛潪甯告湁瓚?鍐欑殑LamaVM铏氭嫙鏈哄揩濂戒簡(jiǎn).
]]> 鍏充簬C涓暟緇勫悕 http://m.shnenglu.com/SysProgrammer/archive/2009/04/04/78951.htmlReno Reno Sat, 04 Apr 2009 08:45:00 GMT http://m.shnenglu.com/SysProgrammer/archive/2009/04/04/78951.html http://m.shnenglu.com/SysProgrammer/comments/78951.html http://m.shnenglu.com/SysProgrammer/archive/2009/04/04/78951.html#Feedback 0 http://m.shnenglu.com/SysProgrammer/comments/commentRss/78951.html http://m.shnenglu.com/SysProgrammer/services/trackbacks/78951.html 澶у崐騫存病鍐欎簡(jiǎn)錛岃瀹炲湪鐨勬垜涓漢璁や負(fù)C++鍗氬鏄渶濂界殑鎶鏈崥瀹箣涓錛屾垜涓鐩撮潪甯稿枩嬈㈠畠錛屾墍浠ュ彧瑕佹湁鏃墮棿錛屼竴瀹氳鍐欎竴浜涘湪涓婇潰銆?br> 鎰熸?zhèn)熸渶娣辯殑灝辨槸錛屽ソ瀹規(guī)槗鑺辨暟涓皬鏃舵悶鍑烘潵鐨勪笢瑗匡紝榪囨鏃墮棿绔熺劧蹇樿浜?jiǎn)锛屾垨鑰呮槸璁板繂涔熷彉寰楁ā緋婁簡(jiǎn)錛屽緢鏄績(jī)鐥涘晩錛佽褰曚笅鏉ワ紝灝變笉浼?xì)鏈墭q欑鍊掗湁浜嬩簡(jiǎn) :< 璦褰掓浼狅紝宸茬粡濂藉儚鏄湪璇匯奀涓撳緙栫▼銆嬫椂錛岃鍒拌繃璇存暟緇勫悕鏄釜寰?#8220;濂囩壒”鐨勬寚閽堬紝鏌愮鎰忎箟涓婅錛屽畠涓嶈兘縐頒負(fù)鎸囬拡錛屽洜涓哄畠鍙兘浣滀負(fù)鍙沖煎嚭鐜幫紝褰撴椂涔熸瘮杈冭糠鎯戯紝寰堝伓鐒?dòng)灱屼粖澶╁湪璇汇奤nix鐜楂樼駭緙栫▼銆嬫椂錛屽啓涓涓墦鍗板嚭榪涚▼鐨勭幆澧冨彉閲忚〃鐨勫皬鐜╂剰錛岃鐢ㄥ埌environ榪欎釜鍏ㄥ眬鎸囬拡錛屽畠?yōu)鏄釜鎸囬拡鏁熬l勭殑鍚嶅瓧錛岃鏁扮粍姣忎釜鍏冪礌涓轟竴涓瓧絎︿覆錛屼互'\0'緇撳熬錛屾暟緇勬渶鍚庝竴涓厓绱犱負(fù)NULL錛屽紑濮嬪厛鎶婅鏁扮粍鐨勯鍦板潃鎷瘋礉緇欎簡(jiǎn)鍙︿竴涓寚閽堬紝char **pp = environ; 鐒跺悗涓轟簡(jiǎn)鍋忕Щ鍒頒笅涓涓瓧絎︿覆錛屾垜绔熺劧浣庣駭鐨勫啓浜?+environ錛岀紪璇戞姤閿欒: ISO C++ forbid to use a non-refernece type as a lvalue! 欏挎椂鎯沖埌environ鏄竴涓暟緇勫悕錛屼笉鑳戒綔涓轟竴涓乏鍊間嬌鐢ㄣ備簬鏄張鎯沖埌浜?jiǎn)濡傛灉int *ia1[]; int *ia2[]錛屽綋鍐檌a1 = ia2鏃朵細(xì)鍑虹幇鍚屾牱鐨勯敊錛岃繖灝辨槸鍥犱負(fù)ia1 ia2閮戒負(fù)鍙沖鹼紝浠諱綍涓涓笉鑳藉嚭鐜板湪=鍙風(fēng)殑宸﹁竟鍏呭綋宸﹀鹼紒 浠g爜1錛?br>char *sz[] = { "aaa", "bbb", "ccc", 0 }; int i = 0; while (sz[i] != 0) { char *p = sz[i]; printf("%s\n", p); ++i; } 浠g爜2: Unix緋葷粺涓婃墦鍗頒竴涓繘紼嬬殑鐜鍙橀噺琛?br>char **pp = environ;
while (*pp != 0) { printf("%s\n", *pp); ++pp; } 灝戠殑鍙滐紝1涓皬鏃舵氮璐逛簡(jiǎn)....
]]> 綰跨▼鍚屾瀵硅薄 http://m.shnenglu.com/SysProgrammer/archive/2008/08/17/Thread.htmlReno Reno Sun, 17 Aug 2008 14:17:00 GMT http://m.shnenglu.com/SysProgrammer/archive/2008/08/17/Thread.html http://m.shnenglu.com/SysProgrammer/comments/59164.html http://m.shnenglu.com/SysProgrammer/archive/2008/08/17/Thread.html#Feedback 0 http://m.shnenglu.com/SysProgrammer/comments/commentRss/59164.html http://m.shnenglu.com/SysProgrammer/services/trackbacks/59164.html Waiting for Multiple Objects 鍦╓indows涓? WaitForMultipleObjects 鍑芥暟鏄竴縐嶅悓姝ョ殑鏂規(guī)硶,鍘熷艦瀹氫箟濡備笅: DWORD WinApi WaitForMultipleObjects( DWORD nCount, const Handle * lpHandles, BOOL bWaitAll, DWORD dwMilliseconds ); 璋冪敤璇ュ嚱鏁扮殑綰跨▼榪涘叆絳夊緟鐘舵?鐩村埌鏉′歡婊¤凍鏃剁戶(hù)緇墽琛?鏉′歡鐨勬弧瓚沖拰鍙傛暟鏈夊叧. 絎竴涓弬鏁頒負(fù)瑕佺瓑寰呯殑Objects鐨勪釜鏁?閫氬父榪欎簺Objects鏄竴緇勫彞鏌?Handles),鍙互鏄唴鏍稿璞″彞鏌勬垨鑰呮槸闈炲唴鏍稿璞?br> 鍙ユ焺,榪欎竴緇勫彞鏌勭敱絎?涓寚鍚戝垎閰嶇粰涓緋誨垪鍙ユ焺緙撳啿鍖虹殑鎸囬拡鎸囧嚭,絎?涓弬鏁板鏋滀負(fù)TRUE,鍒欑瓑寰呯殑綰跨▼蹇呴』絳夊埌鎵鏈?br> 鍙ユ焺鍏ㄩ儴瀹屾垚鎵ц鍚庢墠緇х畫(huà)鎵ц,濡傛灉涓篎ALSE, 閭d箞鍙鏈変竴涓繑鍥炲嵆鍙戶(hù)緇墽琛?絎?涓弬鏁拌緗甌IMEOUT鐨勬椂闂? 濡傛灉鍦ㄧ粰瀹氱殑dwMilliseconds鍐呬粛娌$瓑鍒版潯浠舵弧瓚沖垯榪斿洖. 閭d箞濡備綍寰楀埌絳夊緟鐨勭粨鏋滃憿,濡傛灉bWaitAll璁劇疆涓篢RUE,灝嗚繑鍥炲煎拰W(xué)AIT_OBJECT_0姣旇緝,濡傛灉鐩哥瓑鍒欏叏閮ㄥ彞鏌勯兘宸?br> 鍙戝嚭浜?jiǎn)瀹屾垚淇″? 濡傛灉bWaitAll璁劇疆涓篎ALSE, 濡傛灉鍙敱涓涓彂鍑轟俊鍙?閭d箞灝嗚繑鍥炲煎噺鍘籛AIT_OBJECT_0灝辨槸鍙?br> 鏌勬暟緇勪腑鐨勭儲(chǔ)寮?濡傛灉鏈夊涓俊鍙峰彂鍑?閭d箞榪欎釜鍊兼槸鏁扮粍涓渶灝忕儲(chǔ)寮曠殑閭d竴涓?榪欐牱灝卞彲浠ュ垽鏂槸鍝釜鍙戝嚭浜?jiǎn)瀹屾垚淇″? 閫氬父,榪欎簺瑕佺瓑寰呯殑Objects鏄湪鍏朵粬鐨勭嚎紼嬩腑鎵ц鐨?閭d箞鎵ц瀹屾垚鍚庤皟鐢⊿etEvent( HANDLE hObjHandle )灝卞彲浠?br> 鍙戝嚭涓涓畬鎴愪俊鍙?渚涜皟鐢╓aitForMultipleObjects鐨勭嚎紼嬫帴鏀? 浠ヤ笅鏄竴涓浣曚嬌鐢ㄨ鍑芥暟鐨勭畝鍗曚緥瀛?瀹冧嬌鐢–reateEvent鍑芥暟鍒涘緩浜?涓簨浠跺璞?鏀懼叆鍏ㄥ眬鐨刧hEvents緙撳瓨,鐒跺悗 鍒涘緩浜?jiǎn)涓涓嚎紼?絳夊緟璇ョ嚎紼嬪彂鍑哄畬鎴愪俊鍙? // // Sync01.cpp //
#include <windows.h>
#include <stdio.h>
HANDLE ghEvents[2];
DWORD WINAPI ThreadProc( LPVOID );
void main()
{
HANDLE hThread;
DWORD i, dwEvent, dwThreadID;
// Create two event objects
for (i = 0; i < 2; i++)
{
ghEvents[i] = CreateEvent(
NULL, // default security attributes
FALSE, // auto-reset event object
FALSE, // initial state is nonsignaled
NULL); // unnamed object
if (ghEvents[i] == NULL)
{
printf("CreateEvent error: %d\n", GetLastError() );
ExitProcess(0);
}
}
// Create a thread
hThread = CreateThread(
NULL, // default security attributes
0, // default stack size
(LPTHREAD_START_ROUTINE) ThreadProc,
NULL, // no thread function arguments
0, // default creation flags
&dwThreadID); // receive thread identifier
if( hThread == NULL )
{
printf("CreateThread error: %d\n", GetLastError());
return;
}
// Wait for the thread to signal one of the event objects
dwEvent = WaitForMultipleObjects(
2, // number of objects in array
ghEvents, // array of objects
FALSE, // wait for any object
5000); // five-second wait
// The return value indicates which event is signaled
switch (dwEvent)
{
// ghEvents[0] was signaled
case WAIT_OBJECT_0 + 0:
// TODO: Perform tasks required by this event
printf("First event was signaled.\n");
break;
// ghEvents[1] was signaled
case WAIT_OBJECT_0 + 1:
// TODO: Perform tasks required by this event
printf("Second event was signaled.\n");
break;
case WAIT_TIMEOUT:
printf("Wait timed out.\n");
break;
// Return value is invalid.
default:
printf("Wait error: %d\n", GetLastError());
ExitProcess(0);
}
// Close event handles
for (i = 0; i < 2; i++)
CloseHandle(ghEvents[i]);
}
DWORD WINAPI ThreadProc( LPVOID lpParam )
{
// Set one event to the signaled state
if ( !SetEvent(ghEvents[0]) )
{
printf("SetEvent failed (%d)\n", GetLastError());
return -1;
}
return 1;
}
]]> 青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
亚洲免费视频观看 |
欧美日韩美女 |
在线视频精品一区 |
一区二区三区高清在线观看 |
亚洲精品视频免费 |
999亚洲国产精 |
亚洲午夜在线视频 |
欧美亚洲网站 |
欧美电影在线观看 |
欧美三级欧美一级 |
国产自产精品 |
99亚洲一区二区 |
西西裸体人体做爰大胆久久久 |
欧美在线国产 |
欧美成人午夜免费视在线看片 |
亚洲第一精品久久忘忧草社区 |
亚洲精品乱码 |
欧美在线视频观看免费网站 |
欧美国产精品专区 |
国产精品网站在线 |
亚洲国产美女久久久久 |
亚洲一区亚洲 |
欧美成人影音 |
亚洲欧美激情精品一区二区 |
欧美成人国产 |
伊人婷婷久久 |
午夜在线观看欧美 |
亚洲日本欧美 |
久久麻豆一区二区 |
国产精品不卡在线 |
亚洲高清一区二区三区 |
性久久久久久久久 |
欧美涩涩网站 |
欧美jjzz |
欧美日韩一区不卡 |
亚洲电影欧美电影有声小说 |
亚洲一区日本 |
91久久久在线 |
久久人人爽人人爽 |
国产欧美日韩免费 |
亚洲一区二区高清视频 |
亚洲大片精品永久免费 |
欧美影院精品一区 |
国产精品亚洲产品 |
亚洲视屏一区 |
亚洲人成小说网站色在线 |
久久久久久久久蜜桃 |
国产日韩欧美一区二区三区四区 |
夜夜嗨av一区二区三区免费区 |
奶水喷射视频一区 |
久久激五月天综合精品 |
国产美女精品免费电影 |
亚洲女同精品视频 |
日韩视频中午一区 |
欧美日韩视频在线观看一区二区三区 |
亚洲国产一区在线观看 |
欧美成人日本 |
欧美jizzhd精品欧美喷水
|
国产精品入口尤物 |
亚洲天堂久久 |
在线视频日韩 |
国产精品日本精品 |
午夜精品久久久久影视 |
亚洲一区二区三区激情 |
欧美午夜在线视频 |
亚洲男人第一av网站 |
亚洲午夜一区二区 |
国产精品一二三 |
久久精品1区 |
久久成人av少妇免费 |
黄色亚洲大片免费在线观看 |
久久午夜激情 |
欧美成人精品一区 |
中文av字幕一区 |
亚洲欧美激情视频 |
激情亚洲成人 |
亚洲精品一区二区在线观看 |
欧美午夜精品久久久久久久 |
香蕉久久夜色精品国产 |
欧美诱惑福利视频 |
亚洲精品国产精品国自产观看浪潮
|
久久久久久综合网天天 |
亚洲电影视频在线 |
日韩视频在线观看 |
国产美女精品 |
欧美激情2020午夜免费观看 |
欧美日韩国产一区 |
久久不射网站 |
欧美成人一区在线 |
亚洲字幕在线观看 |
欧美一区二区黄色 |
午夜在线一区 |
久久久蜜臀国产一区二区 |
亚洲国产精品福利 |
99伊人成综合 |
精品96久久久久久中文字幕无 |
亚洲国产mv |
国产欧美日韩一区二区三区在线 |
欧美aa国产视频 |
欧美性色视频在线 |
免费高清在线一区 |
欧美日韩在线观看一区二区三区 |
欧美在线观看视频一区二区 |
欧美大胆a视频 |
久久久久成人精品免费播放动漫 |
欧美大片在线观看一区二区 |
香蕉久久夜色精品国产 |
免费看黄裸体一级大秀欧美 |
性欧美长视频 |
欧美日韩成人一区二区三区 |
久久五月天婷婷 |
国产精品萝li |
亚洲精品一级 |
在线观看国产成人av片 |
亚洲一区激情 |
亚洲深夜福利视频 |
老司机亚洲精品 |
久久精品五月 |
国产精品女人久久久久久 |
亚洲三级视频 |
亚洲精品久久久久中文字幕欢迎你 |
欧美亚洲综合在线 |
亚洲欧美乱综合 |
欧美日韩国产成人精品 |
欧美成人性生活 |
好男人免费精品视频 |
亚洲与欧洲av电影 |
亚洲一区三区在线观看 |
欧美激情区在线播放 |
欧美激情精品久久久 |
在线看片一区 |
久久久精品久久久久 |
久久精品国产免费观看 |
国产精品一区在线观看你懂的 |
夜夜躁日日躁狠狠久久88av |
一本久久知道综合久久 |
欧美激情视频网站 |
亚洲区免费影片 |
亚洲精品女av网站 |
欧美激情国产精品 |
亚洲精品美女91 |
在线视频欧美日韩精品 |
欧美日韩性视频在线 |
夜夜嗨av色一区二区不卡 |
一区二区三区**美女毛片
|
国产日本欧美在线观看 |
亚洲男人第一网站 |
久久精品夜色噜噜亚洲a∨ |
国产亚洲欧洲 |
久久久精品五月天 |
女主播福利一区 |
亚洲欧洲在线视频 |
欧美日韩精品久久 |
亚洲视频久久 |
久久国产精品电影 |
尤物九九久久国产精品的特点 |
久久噜噜噜精品国产亚洲综合 |
久久久综合网站 |
在线精品视频免费观看 |
久久影院亚洲 |
亚洲精品免费观看 |
亚洲一区二区不卡免费 |
国产欧美在线观看一区 |
久久久欧美精品sm网站 |
亚洲黑丝一区二区 |
亚洲综合精品一区二区 |
国产欧美一区二区三区沐欲 |
久久精品一区蜜桃臀影院
|
性做久久久久久免费观看欧美 |
好吊色欧美一区二区三区视频 |
免费不卡视频 |
亚洲一区视频在线观看视频 |
另类亚洲自拍 |
亚洲一区二区三区四区视频 |
国产一区二区三区av电影 |
欧美成人资源网 |
欧美在线视频不卡 |
日韩亚洲国产精品 |
免费欧美在线 |
午夜一区二区三视频在线观看 |
亚洲高清在线观看 |
国产女主播视频一区二区 |
欧美激情aⅴ一区二区三区
|
欧美亚洲成人网 |
久久夜色精品一区 |
亚洲午夜免费福利视频 |
亚洲国产精选 |
久热精品视频在线观看一区 |
亚洲欧美另类中文字幕 |
亚洲精品欧洲 |
狠狠久久婷婷 |
国产女同一区二区 |
国产精品扒开腿爽爽爽视频 |
欧美高清视频一区 |
久久精品国产77777蜜臀 |
亚洲一级片在线看 |
99国产精品久久久久久久久久 |
欧美风情在线观看 |
久久久一本精品99久久精品66 |
亚洲欧美国产毛片在线 |