日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > 服務(wù)器 > 程序內(nèi)執(zhí)行shell命令自動(dòng)獲取局域網(wǎng)內(nèi)所有在線IP和開放端口(Linux)

程序內(nèi)執(zhí)行shell命令自動(dòng)獲取局域網(wǎng)內(nèi)所有在線IP和開放端口(Linux)

來源:程序員人生   發(fā)布時(shí)間:2015-01-24 08:46:11 閱讀次數(shù):4380次

前言

        題目說的有點(diǎn)長,其實(shí)就是以下幾件事,第1是讓Shell命令可以在程序內(nèi)履行,然后將履行結(jié)果傳遞給變量,從而可以進(jìn)行后續(xù)的事務(wù)處理,第2是使用nmap命令獲得當(dāng)前局域網(wǎng)內(nèi)所有在線IP和開放的端口,最后就是對nmap取得的結(jié)果進(jìn)行處理,得到只有IP和端口的結(jié)果。

        Linux命令行的強(qiáng)大功能相信使用Linux的人都知道,1個(gè)命令等于你在windows用幾百行乃至上千行的代碼量才能實(shí)現(xiàn),所以,如果很好的利用shell命令,可以說是事半功倍。

        而要充分利用shell的結(jié)果,必定是需要取得可以處理的命令返回結(jié)果。

程序內(nèi)履行Shell命令

        主要是利用以下的函數(shù):

        函數(shù)定義:

#include <stdio.h> FILE * popen(const char *command , const char *type ); int pclose(FILE *stream);

 

        函數(shù)說明:

        popen()函數(shù)通過創(chuàng)建1個(gè)管道,調(diào)用fork()產(chǎn)生1個(gè)子進(jìn)程,履行1個(gè)shell以運(yùn)行命令來開啟1個(gè)進(jìn)程。這個(gè)管道必須由pclose()函數(shù)關(guān)閉,而不是fclose()函數(shù)。pclose()函數(shù)關(guān)閉標(biāo)準(zhǔn)I/O流,等待命令履行結(jié)束,然后返回shell的終止?fàn)顟B(tài)。如果shell不能被履行,則pclose()返回的終止?fàn)顟B(tài)與shell已履行exit1樣。

  type參數(shù)只能是讀或?qū)懼械?種,得到的返回值(標(biāo)準(zhǔn)I/O流)也具有和type相應(yīng)的只讀或只寫類型。如果type是"r"則文件指針連接到command的標(biāo)準(zhǔn)輸出;如果type是"w"則文件指針連接到command的標(biāo)準(zhǔn)輸入。

  command參數(shù)是1個(gè)指向以NULL結(jié)束的shell命令字符串的指針。這行命令將被傳到bin/sh并使用-c標(biāo)志,shell將履行這個(gè)命令。

  popen()的返回值是個(gè)標(biāo)準(zhǔn)I/O流,必須由pclose來終止。前面提到這個(gè)流是單向的(只能用于讀或?qū)懀O蜻@個(gè)流寫內(nèi)容相當(dāng)于寫入該命令的標(biāo)準(zhǔn)輸入,命令的標(biāo)準(zhǔn)輸出和調(diào)用popen()的進(jìn)程相同;與之相反的,從流中讀數(shù)據(jù)相當(dāng)于讀取命令的標(biāo)準(zhǔn)輸出,命令的標(biāo)準(zhǔn)輸入和調(diào)用popen()的進(jìn)程相同。

      返回值:

  如果調(diào)用fork()或pipe()失敗,或不能分配內(nèi)存將返回NULL,否則返回標(biāo)準(zhǔn)I/O流。popen()沒有為內(nèi)存分配失敗設(shè)置errno值。如果調(diào)用fork()或pipe()時(shí)出現(xiàn)毛病,errno被設(shè)為相應(yīng)的毛病類型。如果type參數(shù)不合法,errno將返回EINVAL。

      使用方法:

//execute shell command //履行1個(gè)shell命令,輸出結(jié)果逐行存儲(chǔ)在resvec中,并返回行數(shù) int32_t myexec(const char *cmd, vector<string> &resvec) { resvec.clear(); FILE *pp = popen(cmd, "r"); //建立管道 if (!pp) { return ⑴; } char tmp[1024]; //設(shè)置1個(gè)適合的長度,以存儲(chǔ)每行輸出 while (fgets(tmp, sizeof(tmp), pp) != NULL) { if (tmp[strlen(tmp) - 1] == ' ') { tmp[strlen(tmp) - 1] = ' 主站蜘蛛池模板: 亚洲综合在线一区二区 | 综合久久狠狠色成人网 | 久久久免费精品视频 | 草久久久 | 久久亚洲精品视频 | 麻豆av在线播放 | 免费黄色在线看 | 99re视频在线 | 午夜天堂| 久久久网站| 国产精品久久国产精品 | 懂色av蜜臀av粉嫩av分享吧 | 一区二区三区免费 | 精品乱码| 日本一区二区三区在线观看视频 | 成年人在线观看 | 国产精品视频999 | 亚洲精品久久久久久久久久久 | 人人草人人干 | 久久精品亚洲精品国产欧美 | 欧美精品福利在线 | 五月婷婷视频在线观看 | 日韩欧美一卡二卡 | 精品国产一区二区三区性色av | 国产精品久久久久久久久久东京 | 国产精品一区一区三区 | 欧美偷拍一区二区 | www.狠狠撸.com | 久久诱惑 | 久国久产久精永久网页 | 欧美性大战久久久久久久蜜臀 | 国产小视频网站 | 亚洲国产电影 | 亚洲综合大片69999 | 精品日韩在线 | 亚洲高清免费 | 在线一区二区三区 | 精品在线 | 夜色成人av | 成人免费在线播放 | 99精品网|