Shamharoth Geschrieben 16. März 2010 Geschrieben 16. März 2010 Hallo zusammen. Ich hab wieder mal ein Problem. Ich möchte über ein Pipe eine Verbindung zu einem PHP-script herstellen (funktioniert auch), dann übergebe ich ihm daten (funzt auch wieder) und bekomme dann wieder verarbeitete daten zurück (woohoo funzt schon wieder). Jetzt möchte ich gerne, bevor mein Programm von PHP das ergebnis zurückbekommt ein select() machen (oder was auch immer dafür geeignet ist) mit einem timeout. es kann ja passieren, dass der php sich aufhängt und ich möchte dementsprechend reagieren. mein ansatz schaud so aus, dass ich folgenden code drinn hab: fd_set rset; .... timeval timeout; timeout.tv_sec=20; FD_ZERO (&rset); FD_SET (outfp, &rset); status = select (outfp, &rset, NULL , NULL, &timeout); /*STATUS AUSWERTEN*/ ... buflength = read(outfp, buf, 300); Ich bekomme beim select jedoch -1 zurück. Wie müsste es richtig ausschauen? Danke im vorraus
Klotzkopp Geschrieben 16. März 2010 Geschrieben 16. März 2010 Setz bitte mal alle Member von timeout. Was sagt WSAGetLastError?
Shamharoth Geschrieben 16. März 2010 Autor Geschrieben 16. März 2010 (bearbeitet) AAAAAAaaah ich glaub das war das problem jetzt schaud es folgender masen aus: fd_set rset; timeval timeout; timeout.tv_sec=20; timeout.tv_usec=0; FD_ZERO (&rset); FD_SET (outfp, &rset); status = select (outfp+1, &rset, NULL , NULL, &timeout); *buf = '\0';.... (outfp+1 muss gestellt werden, da es heisd es muss der höchste FD +1 sein. ... hab ich so gelesen ^^) Bearbeitet 16. März 2010 von Shamharoth
Klotzkopp Geschrieben 16. März 2010 Geschrieben 16. März 2010 (outfp+1 muss gestellt werden, da es heisd es muss der höchste FD +1 sein. Das kommt darauf an, ob du Berkeley Sockets oder Windows Sockets benutzt. Beim nächsten Mal bitte dazuschreiben.
Shamharoth Geschrieben 16. März 2010 Autor Geschrieben 16. März 2010 ou sry stimmt, ich hab es vergessen zu erwähnen. naja ich hoffe mal, dass durch den verbesserten code den ich im vorherigen post reingestellt weiterhelfen kann, wenn jemand mal nach select sucht (Fehler lag trotzdem an dem fehlenden Angeben von Millisekunden. hatte es auch mal mit outfp+1 und hatte den Fehlercode ausgespuckt )
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden