1

我正在尝试执行“whois search domainname.tld”。我目前正在使用 system("whois search domainname.tld"); 但是我需要将输出转换为 NSString 变量以输出给用户。

我怎样才能做到这一点?

4

2 回答 2

3

如果您愿意,您也可以使用 NSTask 来实现相同的目标。现在,我通常不是为他们做作业的人,但这里是你如何使用 NSTask 做这样的事情:pastie.org/1087887

这个想法是您使用参数创建一个NSTask要运行的对象@"/usr/bin/whois"(磁盘上运行的位置whois@"search domainname.tld"。然后,您使用一个NSPipe对象来读取命令的输出,并将其返回给用户。

注意:这个函数是阻塞的(它会等到whois运行结束才结束),不建议这样做,特别是对于网络操作。使这个异步是留给读者的练习。

于 2010-08-12T09:23:05.823 回答
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因为您可以CObjective-c.

于 2010-08-12T03:22:05.183 回答