锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
棣栧厛鎸夌収鑰佸笀鐨勬彁紺猴紝閰嶄簡ftp鏈嶅姟鍣ㄥ拰web鏈嶅姟鍣紝鐔熸倝浜嗕竴浜?/span>ftp鍛戒護鍜岄厤緗柟娉曘備絾鏄ftp鐨勯氫俊鏂瑰紡鍜屽叿浣撹繃紼嬭繕鏄竴鏃犳墍鐭ャ?/span>
鎺ヤ笅鏉ユ壘鏉?/span>RFC-FTP鍗忚鏉ョ湅錛屽悓鏃跺弬鑰冧簡telnet鍗忚鍜?/span>http鍗忚銆傜粨鏋滆繕鏄竴澶撮浘姘達紝鎼炰笉娓呮鍗忚涓瀹氱殑涓滆タ鍒板簳搴旇鎬庢牱鍘誨疄鐜般?/span>
鎴戞墦綆楄漿鍙樻濊礬錛屽姩鎵嬪仛璇曢獙銆傛ā鎷熶簡涓涓湇鍔″櫒绔▼搴忥紝榪欎釜紼嬪簭鍙兘send涓鏉′俊鎭拰recv涓鏉′俊鎭茍涓旀墦鍗幫紝鐒跺悗鐢?/span>linux鑷甫鐨?/span>ftp瀹㈡埛绔▼搴忓幓榪炴帴妯℃嫙鏈嶅姟鍣ㄣ傛垜鎯充粬浠箣闂磋偗瀹氭槸鏈夐氫俊鏉ュ線鐨勶紝榪欐牱鍋氬彲浠ヨ瀵熷鎴風鍒板簳浼犵粰鏈嶅姟鍣ㄦ庢牱褰㈠紡鐨勪俊鎭傜粡榪囧弽澶嶆祴璇曘傜粓浜庢悶鏄庣櫧浜嗗鎴風鍜屾湇鍔″櫒涔嬮棿涓ユ牸鎸夌収RFC-959鍗忚鐨勮瀹氫竴闂竴絳旂殑閫氳鏂瑰紡銆?/span>
鎺ヤ笅鏉ワ紝鎴戝氨娌℃湁鐫鎬ュ姩鎵嬬戶緇啓紼嬪簭錛岃屾槸鍘葷綉涓婃悳绱簡涓嶅皯鍏充簬ftp鍗忚鐨勬枃妗e拰璁ㄨ銆備簡瑙d簡鍙?/span>socket-錛堟帶鍒墮氶亾錛屾暟鎹氶亾錛夈備簡瑙d簡涓誨姩浼犺緭鍜岃鍔ㄤ紶杈撶殑鍖哄埆銆?/span>
鐪嬩簡榪欎簺鏉愭枡浠ュ悗錛屾垜宸茬粡澶ф瀵規暣涓?/span>ftp鏁翠釜浼犺緭榪囩▼鏈変竴涓簡瑙c傛帴涓嬫潵緇х畫瀹屽杽浜嗘ā鎷熸湇鍔″櫒錛岃兘澶熺敤ftp瀹㈡埛绔蔣浠剁櫥闄嗗拰閫鍑猴紙鍙仛鑲畾鍥炲簲錛夈傝繖鏍鋒帶鍒墮氶亾鐨勯氫俊宸茬粡鍙互姝e父瀵硅瘽浜嗐傚墿涓嬬殑涓澶ч棶棰樺氨鏄暟鎹氶亾鐨勯氫俊鏂瑰紡浜嗐?/span>
鍋氬埌榪欓噷錛屾垜閬囧埌浜嗕袱涓鎵嬬殑闂銆?/span>
Listen錛堬級鐩戝惉鍑芥暟鏄浣曚綔鐢ㄧ殑錛?/span>鎸夋垜鐨勭悊瑙o紝listen鍑芥暟鏄繖閬撻鐩腑“鎺у埗鏈澶у悓鏃惰闂暟”鐨勫叧閿傛垜鍦ㄧ紪鐮佽繃紼嬩腑瀵硅繖涓湴鏂瑰仛浜嗚瘯楠岋細褰撴垜鍦╳hile錛?錛変腑鎵цaccept鏃訛紝褰撴帴鏀跺埌瀹㈡埛绔痗onnect璇鋒眰鏃訛紝fork錛堬級寤虹珛瀛愯繘紼嬪幓澶勭悊錛岀埗榪涚▼緇х畫寰幆絳夊緟accept錛堬級錛屼箣鍓峫isten鍑芥暟backlog涓?銆備絾緇撴灉鏄垜浠嶇劧鍙互浣跨敤涓変釜浠ヤ笂鐨刦tp瀹㈡埛绔繘紼嬪幓鍚屾椂璁塊棶鏈嶅姟鍣紝騫朵繚鎸佽繛鎺ヤ笉鏂紑鎴栬呴樆濉炪?/p>
涓ゅ彴鐢佃剳鐩鎬簰閫氫俊錛屽浣曞彇寰楅傚悎瀵規柟璁塊棶鐨勮嚜宸盜P鍦板潃錛?/span>鍦ㄥ鎴風瑕佹眰浣跨敤琚姩浼犺緭妯″紡鐨勬椂鍊欙紝鏈嶅姟鍣ㄨ寤虹珛涓存椂鐨勬暟鎹紶杈撻氶亾錛屽茍鎶婂緩濂界殑鏈満鍦板潃+鏂扮鍙o紝浠?#8220;msg…. (xxx,xxx,xxx,xxx,xxx,xxx) \r\n”鐨勫艦寮忓彂閫佺粰瀹㈡埛绔紝瀹㈡埛绔牴鎹墍緇欑殑鍦板潃鍜岀鍙e彿鍜屾湇鍔″櫒鐨勬暟鎹紶杈撻氶亾寤虹珛榪炴帴銆傚湪C/C++閲岋紝鍙互浣跨敤gethostname鍑芥暟鑾峰彇鏈満鍚嶇О錛屾牴鎹幏鍙栫殑鍚嶇О錛屼嬌鐢╣ethostbyname鍑芥暟鍙互鑾峰彇鏈満鐨処P鍦板潃銆備絾鏄繖涓狪P鍦板潃姘歌繙鏄?27.0.0.1錛堣嚦灝戞垜鐨勭▼搴忎腑鏄繖鏍風殑錛夈備絾鏄繖涓湴鍧浼犵粰瀵規柟錛屽鏂瑰茍涓嶈兘鎸夌収榪欎釜鍦板潃鎵懼埌鏈嶅姟鍣紙闄ら潪瀹㈡埛绔拰鏈嶅姟鍣ㄥ湪鍚屼竴鍙扮數鑴戜笂錛夈傚鏋滃鎴風鍜屾湇鍔″櫒鍦ㄥ悓涓灞鍩熺綉涓殑涓嶅悓鐢佃剳涓婏紝閭f湇鍔″櫒搴旇浼犵粰瀹㈡埛绔被浼?92.168.x.x鐨勫湴鍧銆傚鏋滃湪internet鑼冨洿鍐呭垯闇瑕佷紶閫佷簰鑱旂綉涓婄殑IP鍦板潃銆傝岀湡姝g殑ftp鏈嶅姟鍣ㄥ拰瀹㈡埛绔箣闂寸殑閫氫俊錛屾槸鍙互鍙戦侀傚悎瀵規柟璁塊棶鑷繁鐨処P鍦板潃緇欏鏂圭殑銆傝岀洰鍓嶆墍浜嗚В鍒扮殑鍑芥暟錛実ethostname鍜実ethostbyname鍑芥暟騫朵笉鑳藉畬鎴愯繖欏硅姹傘?/p>
鍦ㄧ綉涓婃煡浜嗗緢澶氳祫鏂欙紝鍏充簬浠ヤ笂涓や釜闂錛屾湁涓嶅皯瀛樺湪鍜屾垜綾諱技鎯呭喌鐨勬彁闂紝涓嶈繃鍥炵瓟涓嶇敋璇︾粏銆?/span>
[3819]not fork [3820]forked pid=0 [3820]in child process,p_id=3820 [3819]forked pid=3820 [3819]in parent process,my pid=3820 [3819]in parent process,my getpid=3819
]]>#include <unistd.h>;
#include <sys/types.h>;
main ()
{
pid_t pid;
pid=fork();
if (pid < 0)
printf("error in fork!");
else if (pid == 0)
printf("i am the child process, my process id is %dn",getpid());
else
printf("i am the parent process, my process id is %dn",getpid());
}
榪欐浠g爜鍐欎簡涓涓嬌鐢╢ork鍑芥暟鍒涘緩瀛愯繘紼嬶紝鐖跺瓙榪涚▼鍚屾椂榪愯鑰屼駭鐢熶氦閿欑殑錛屼笉涓鏍風殑榪愯緇撴灉銆?br>榪愯緇撴灉濡備笅錛?br>[root@localhost c]# ./a.out
i am the child process, my process id is 4286
i am the parent process, my process id is 4285
fork鍦ㄨ嫳鏂囦腑鏄弶瀛愶紝鍒嗗弶鐨勬剰鎬濓紝鍦ㄥ嚱鏁癴ork涓紝鍙栧悗闈㈢殑鎰忔濄傚緢褰㈣薄鐨勮〃紺虹▼搴忎粠榪欓噷鍒嗗弶錛宖ork鍑芥暟鍒涘緩浜嗗瓙榪涚▼錛屽瓙榪涚▼鍜岀埗榪涚▼鍚屾椂錛堝叾瀹炴槸cpu鍒嗘椂澶勭悊錛夊紑濮嬭繍琛屽垎鍙変箣鍚庣殑紼嬪簭銆?br> 鎴戞妸紼嬪簭鏀瑰啓浜嗕竴涓嬶細
#include <unistd.h>
#include <sys/types.h>
main()
{
pid_t pid;
printf("\n[%d]not fork pid=%d\n",getpid(),pid);
pid=fork();
printf("\n[%d]forked pid=%d\n",getpid(),pid);
if(pid<0)
{
printf("error in fork!\n");
getchar();
exit(1);
}
else if(pid==0)
printf("\n[%d]in child process,p_id=%d\n",getpid(),getpid());
else
{
printf("\n[%d]in parent process,my pid=%d\n",getpid(),pid);
printf("\n[%d]in parent process,my getpid=%d\n",getpid(),getpid());
}
}
紼嬪簭榪愯緇撴灉濡備笅錛?br>[hardy@localhost fork]$ ./fork
鍙互娓呮鐨勭湅鍒?not fork鍙墦鍗頒簡涓嬈★紝鍏朵腑[3819]鏄埗榪涚▼鐨勮繘紼嬪彿錛屽垱寤篺ork浠ュ悗錛宖ork鍑芥暟榪斿洖緇欑埗榪涚▼鐨勫紁id鏄瓙榪涚▼鐨勮繘紼嬪彿[3820]錛岃屽湪瀛愯繘紼嬩腑錛宲id鍊間負闆躲備篃灝辨槸璇村瓙榪涚▼涓紝pid琚疆闆躲?/p>
寮曠敤緗戜笂涓浣嶇綉鍙嬬殑瑙i噴“鍏跺疄灝辯浉褰撲簬閾捐〃錛岃繘紼嬪艦鎴愪簡閾捐〃錛岀埗榪涚▼pid(p 鎰忓懗point)鎸囧悜瀛愯繘紼嬬殑榪涚▼id, 鍥犱負瀛愯繘紼嬫病鏈夊瓙榪涚▼錛屾墍浠ュ叾pid涓?. ”
涓嬮潰鏈変竴涓緢鏈夋剰鎬濈殑紼嬪簭錛?br>
#include <sys/types.h>
#include <unistd.h>
int main()
{
int i;
for( i= 0; i< 3; i++)
{
int pid= fork();
if(pid== 0)
{
printf("son\n");
}
else
{
printf("father\n");
}
}
return 0;
}
澶у鎯蟲兂鐪嬫渶鍚庡皢鍑虹幇鍑犱釜son 鍑犱釜father鍛紵
銆?br>銆?br>銆?br>銆?br>銆?br>銆?br>銆?br>
瀵逛竴涓嬬瓟妗堝惂錛?br>[hardy@localhost fork]$ ./fork
father
son
son
son
father
father
son
father
son
son
father
father
son
father
鎬誨叡7涓猻on7涓猣ather銆備綘絳斿浜嗕箞錛?br>
榪欓亾棰橀渶瑕佸湪綰鎬笂鐢葷敾鎵嶅ソ鐞嗚В
for i=0 1 2
father father father
son
son father
son
son father father
son
son father
son
鍏朵腑姣忎竴琛屽垎鍒唬琛ㄤ竴涓繘紼嬬殑榪愯鎵撳嵃緇撴灉銆?br>褰撲駭鐢熷瓙榪涚▼鐨勬椂鍒伙紝瀛愯繘紼嬫墦鍗皊on錛屽綋瀛愯繘紼嬭皟鐢╢ork鐨勭敓鎴愬瓙瀛愯繘紼嬶紝浠栧氨鎻愬崌涓篺ather銆?br>鎬葷粨鏉ヨ錛宖ather姘歌繙鎵撳嵃father錛宻on鍦╢ork涔嬪墠鏄痵on錛宖ork涔嬪悗灝變負father錛屽悓鏃剁敓鎴愭柊鐨剆on銆?br>榪欎釜姣斿柣灝卞儚鐪熸鐨勭埗瀛愶紝瀛╁瓙闀垮ぇ浜嗙敓浜嗗皬瀛╋紝瀛╁瓙灝辨垚浜嗙埗浜層傝岀埗浜叉案榪滄槸鐖朵翰銆?
]]>
char * generate_new_answer (RECORD * ar, OPTIONS * opt)
鎴戠殑鐤戦棶涔熶富瑕侀泦涓湪榪欓儴鍒嗭紝鍏堣璇存垜鐪嬫槑鐧界殑閮ㄥ垎銆?br>
if (!ar->count)
2
{ // First step work
3// i = size = (unsigned long) pow (opt->total_num, opt->select_num)+2;
4
5 for (i=0, size = 1; i<opt->select_num;i++)//璁$畻闆嗗悎鐨勬繪暟
6
{
7 size *= opt->total_num;
8 }
9 i = size = size + 2;
10
11 for (j=0; j<opt->select_num; j++)
12
{
13 ar->answer[ar->count ][opt->select_num-j-1] = opt->resource [(opt->total_num*10-j-1)%opt->total_num];
14 ar->answer[ar->count+1][j] = opt->resource [opt->total_num-1];
15 }
16 return (ar->answer[ar->count]);
17 }
涓婇潰榪欎竴孌墊槸褰撹繕鏈繘琛岀寽嫻嬬殑鏃跺欒Е鍙戠殑涓孌靛嚱鏁般?br> 5-9琛屾槸璁$畻涓涓嬫暣涓泦鍚堢殑鏁伴噺錛?0閫?鐨勭粨鏋滃簲璇ユ槸10鐨?嬈℃柟錛?浜褲傚叾涓彉閲廼鍦ㄤ箣鍓嶉潤鎬佸0鏄庛?br> 11-15琛屾槸鐢熸垚絎竴嬈″拰絎簩嬈¤鐚滄祴鐨刟nswer銆傝嚦浜庝負浠涔堣鍥哄畾絎竴嬈″拰絎簩嬈$殑鐚滄祴絳旀銆傚湪鎴戠殑紼嬪簭涓篃鏈夌被浼肩殑璁懼畾錛屾垜鐨勫叏闆嗘槸錛?000-9999錛夎瀹氱涓嬈$寽嫻?876錛岀浜屾鐚滄祴2345銆傝繖鏍峰仛鐨勫ソ澶勬槸鍙互鏈澶ч檺搴︾殑鍔犻熺寽嫻嬮熷害銆傚鏋滅涓嬈$寽0000錛岃岀浜屾鐚?111鐨勮瘽錛屾帓闄ゆ帀鐨勭粨鏋滄瘮杈冨皯銆?br> 鏈鍚庡嚱鏁拌繑鍥炵涓嬈$殑鐚滄祴緇撴灉銆?nbsp;
for (; i; i--)
{
}
涓婇潰榪欎釜寰幆鏄綋鏈変簡鐚滄祴鏁板悗錛屽紑濮嬭繘琛屾帓闄ゅ伐浣滐紝鏈鍚庝駭鐢熶竴涓湁鏁堢殑鏂扮殑絳旀銆俰鏄泦鍚堜腑鍓╀綑緇撴灉鐨勬暟閲忋?br>
ar->answer[ar->count][0] ++;
2 for (j=0; j<opt->select_num; j++)
3
{
4 if (ar->answer[ar->count][j] > opt->resource [opt->total_num-1])
5
{
6 ar->answer[ar->count][j] = opt->resource [0];
7 ar->answer[ar->count][j+1]++;
8 ar->answer[ar->count][opt->select_num] = 0;
9 } else
10
{
11 break;
12 }
13 }
涓婇潰榪欐鏄繘鍏ュ驚鐜箣鍚庣殑絎竴孌典唬鐮侊紝
1琛岋紝鐚滄祴嬈℃暟鍔?.
2-13琛屼粠娉ㄩ噴鏉ョ湅榪欐槸鐢熸垚涓涓柊鐨勭瓟妗堢郴鍒楋紝鍙槸鎴戝彧鑳界湅鍑鴻繖鏄鏈瀵規瘮絳涢夌殑絳旀鐨勬鏌ワ紝鐪嬫槸鍚﹁秴鍑哄叏闆嗕腑鐨勮寖鍥淬?br>
for (j=0; j<ar->count; j++)
2
{ // compare with all records
3 give_answer_tip (tip, ar->answer[j], ar->answer[ar->count], opt->select_num);
4 if (tip[0] != ar->tip[j][0] || tip[1] != ar->tip[j][1])
5
{
6 break;
7 }
8 }
涓婇潰榪欐鏄繘鍏ュ驚鐜箣鍚庣殑絎簩孌典唬鐮侊紝
灝嗚繖涓粨鏋滃拰鍓嶅嚑嬈$殑鐚滄祴鍋?#8220;鐚滄暟瀛楀垽鏂?#8221;錛屽鏋滃拰涔嬪墠鐨勭寽嫻嬬粨鏋滀笉瀹屽叏鐩稿悓鐨勶紝鍒欒煩鍑恒?br> 榪欎竴鐐逛笉澶槑鐧姐傞鍏堜負浠涔堣鍜屼箣鍓嶇殑緇撴灉鍋氭瘮瀵廣備箣鍓嶇殑緇撴灉鏄寽鏁板拰絳旀鐨勫叧緋匯傝屾柊鐚滄暟鍜屾棫鐚滄暟涔嬮棿鐨勫叧緋昏兘璇存槑浠涔堝憿錛熻繖涓嶆槸鎯父鐨勬濊礬銆?/strong>
if (j == ar->count)
2
{ // pass all records check, record new answer
3 memcpy (ar->answer[ar->count+1], ar->answer[ar->count], opt->select_num);
4 return (ar->answer[ar->count]);
5 }
褰撲笂涓涓驚鐜病鏈塨reak鏃訛紝涔熷氨鏄紙褰撳墠鏁板瓧鍜屼箣鍓嶇寽鏁幫級鐨勬瘮瀵圭粨鏋滃拰錛堜箣鍓嶇寽鏁板拰絳旀錛夌殑姣斿緇撴灉閮戒笉涓鏍風殑鏃跺欍傝繖璇ユ暟瀛椾負鏂扮殑鐚滄暟銆傝繑鍥炪?
]]>
]]>
]]>