我試圖執行「whois search domainname.tld」。我目前正在使用系統(「whois search domainname.tld」);但是我需要獲得輸出到NSString變量輸出給用戶。目標C:終端輸出到NSString中
我怎樣才能做到這一點?
我試圖執行「whois search domainname.tld」。我目前正在使用系統(「whois search domainname.tld」);但是我需要獲得輸出到NSString變量輸出給用戶。目標C:終端輸出到NSString中
我怎樣才能做到這一點?
如果你願意,你可以使用NSTask來完成相同的目標。現在,我通常不會爲他們做人的功課,但這裏是你如何用NSTask做這樣的事情:pastie.org/1087887。
這個想法是,您創建一個NSTask
對象運行@"/usr/bin/whois"
(磁盤上運行whois
的位置)與參數@"search domainname.tld"
。然後,您使用一個NSPipe
對象來讀取命令的輸出,並將其返回給用戶。
注:這個功能阻止(它會等到完成運行前whois
結束),這是不推薦的,尤其是對網絡運營。使這種異步是一個留給讀者的練習。
改爲使用popen
。
system
函數調用不返回任何輸出,所以你不能得到它。
可以使用popen
到例如netstat -l
管道輸出:
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
FILE * fp;
int status;
const unsigned int sz = 1024;
char buf[sz];
string cmd;
//cmd = "ls *";
cmd = "netstat -l";
fp = popen(cmd.c_str(), "r");
if (fp == NULL) return 0;
while (fgets(buf, sz, fp) != NULL)
printf("%s", buf);
status = pclose(fp);
if (status == -1)
{
cout << "pclose failed" << endl;
}
return 1;
}
看到man popen
獲取更多信息。
應該很容易將輸出合併到Objective-C
中,因爲您可以從Objective-c
調用C
。
不要使用系統和popen來做一個簡單的whois請求。在你的編程語言或底部使用特定的庫,只需在端口43上打開一個TCP套接字併發送由CR + LF終止的查詢,如RFC3912 – 2018-01-04 20:13:34