Frage

Ich versuche, „whois Suche domainname.tld“ auszuführen. Ich bin derzeit mit System ( "WHOIS-Suche domainname.tld"); aber ich brauche die Ausgabe in eine NSString Variable für die Ausgabe an den Benutzer zu erhalten.

Wie kann ich das tun?

War es hilfreich?

Lösung

Wenn Sie möchten, können Sie alternativ NSTask verwenden das gleiche Ziel zu erreichen. Nun, ich bin nicht in der Regel eine für sie Menschen Hausaufgaben zu tun, aber hier ist, wie man so etwas wie dies mit NSTask tun würde: pastie.org/1087887 .

Die Idee ist, dass Sie ein NSTask Objekt zu laufen @"/usr/bin/whois" (der Ort auf der Festplatte, wo whois aus ausgeführt wird) erstellen mit dem Argumente @"search domainname.tld". Sie erhalten dann ein NSPipe Objekt verwenden, um die Ausgabe des Befehls zu lesen, und Rückkehr, dass für den Benutzer.

Hinweis: diese Funktion blockiert wird (es bis whois beendet laufen vor der Fertigstellung würde warten), die nicht zu empfehlen, vor allem für den Netzbetrieb. Diese asynchrone machen ist eine Übung dem Leser überlassen.

Andere Tipps

Verwenden popen statt.

Der system Funktionsaufruf zurückgeben keine Ausgabe, so dass Sie es nicht mit, dass bekommen.

Sie können popen zum Beispiel Rohr Ausgang netstat -l verwenden:

#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;
}

siehe man popen für weitere Informationen.

Es sollte einfach sein, die Ausgabe in Objective-C zu integrieren, da Sie C von Objective-c aufrufen können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top