我正在尝试执行“whois search domainname.tld”。我目前正在使用 system("whois search domainname.tld"); 但是我需要将输出转换为 NSString 变量以输出给用户。
我怎样才能做到这一点?
我正在尝试执行“whois search domainname.tld”。我目前正在使用 system("whois search domainname.tld"); 但是我需要将输出转换为 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
因为您可以C
从Objective-c
.