我正在尝试执行“whois search domainname.tld”。我目前正在使用system(“whois search domainname.tld”);但是我需要将输出转换为NSString变量以输出给用户。
我该怎么做?
答案 0 :(得分:3)
如果您愿意,您也可以使用NSTask来实现相同的目标。现在,我通常不会为他们做人们的功课,但是你可以用NSTask来做这样的事情:pastie.org/1087887。
我们的想法是创建一个NSTask
对象,使用参数@"/usr/bin/whois"
运行whois
(磁盘上运行@"search domainname.tld"
的位置)。然后使用NSPipe
对象读取命令的输出,并将其返回给用户。
注意:此功能正在阻止(它会等到whois
完成之前完成运行),这是不推荐的,特别是对于网络操作。使这种异步是一种留给读者的练习。
答案 1 :(得分:2)
改为使用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
。