1

「whois検索ドメイン名.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 に答える