Rückgabe / Ausgabe

  • Rückgabe / Ausgabe

    Hallo Leute,

    ich möchte ein tool erstellen, das über Argumente die Steuerung einer USB Schaltbox übernimmt. Für die Ansteuering gibt es mitgelieferte Klassen, die nur Foundation einbinden. Das heißt doch, es passen sollte, wenn ich mit xcode ein command line tool (Foundation) erstellen würde, oder? Hab da aber schon bei meinen ersten Tests Probleme:

    Hab folgenden Code:

    Brainfuck-Quellcode

    1. #import <Foundation/Foundation.h>
    2. int main (int argc, const char * argv[]) {
    3. NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    4. for(int i=1; i<argc; i++){
    5. if (strcmp(argv[i],"1")==0){
    6. // Lampe einschalten
    7. NSLog(@"Lampe %i an.", i);
    8. }else{
    9. // Lampe ausschalten
    10. NSLog(@"Lampe %i aus.", i);
    11. }
    12. }
    13. NSLog(@"------------------------");
    14. [pool drain];
    15. return 0;
    16. }
    Alles anzeigen


    Wenn ich das kompilierte Programm in den bin-Ordner lege, kann ich es ausführen und es funktioniert auch. Wenn ich allerdings mit Applescript versuche, mir die Ausgabe des Befehls anzuzeigen (set x to do shell script "Schalten 1 1 0 1"), dann funktioniert das leider nicht. Ich bekomme da nur einen leeren String zurückgegeben.
    Grüße
    Seb
  • RE: Rückgabe / Ausgabe

    Original von Tom9811
    Das wird an demNSLog() liegen. AS/Shell wird auf stdout hören,während NSLog() auf stderr loggen dürfte.

    Ersetze das NSLog() mal durch einen printf()


    Er könnte auch NSLog() beibehalten und einfach beim Aufruf seines Tools stderr auf stdout umlenken.

    Einfach beim Aufrufen des Tools (via Terminal) als Argument "2>&1" (ohne Anführungszeichen) übergeben.
    Die Objective-Cloud ist fertig wenn sie fertig ist. Beta heißt Beta.

    Objective-C und Cocoa Band 2: Fortgeschrittene
    Cocoa/Objective-C Seminare von [co coa:ding].
  • RE: Rückgabe / Ausgabe

    Original von Objcler
    Original von Tom9811
    Das wird an demNSLog() liegen. AS/Shell wird auf stdout hören,während NSLog() auf stderr loggen dürfte.

    Ersetze das NSLog() mal durch einen printf()


    Er könnte auch NSLog() beibehalten und einfach beim Aufruf seines Tools stderr auf stdout umlenken.

    Einfach beim Aufrufen des Tools (via Terminal) als Argument "2>&1" (ohne Anführungszeichen) übergeben.

    Das ist keine gute Idee:

    1.
    Wenn du das umleitest, dann wird zweimal (Umleitung + Systemlog) geloggt, AFAIK.

    2.
    Wie loggt er dann Fehler?

    NSLog() wird zwar zu Debugging-Zwecken gerne missbraucht, mich eingeschlossen. Aber es hat einen wahren Sinn: Logging
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • RE: Rückgabe / Ausgabe

    Original von Tom9811
    Original von Objcler
    Original von Tom9811
    Das wird an demNSLog() liegen. AS/Shell wird auf stdout hören,während NSLog() auf stderr loggen dürfte.

    Ersetze das NSLog() mal durch einen printf()


    Er könnte auch NSLog() beibehalten und einfach beim Aufruf seines Tools stderr auf stdout umlenken.

    Einfach beim Aufrufen des Tools (via Terminal) als Argument "2>&1" (ohne Anführungszeichen) übergeben.

    Das ist keine gute Idee:

    1.
    Wenn du das umleitest, dann wird zweimal (Umleitung + Systemlog) geloggt, AFAIK.

    2.
    Wie loggt er dann Fehler?

    NSLog() wird zwar zu Debugging-Zwecken gerne missbraucht, mich eingeschlossen. Aber es hat einen wahren Sinn: Logging


    Auch wieder wahr. War auch nur ein Vorschlag für den Fall, dass er keine 5345345345 NSLog-Calls austauschen will.
    Die Objective-Cloud ist fertig wenn sie fertig ist. Beta heißt Beta.

    Objective-C und Cocoa Band 2: Fortgeschrittene
    Cocoa/Objective-C Seminare von [co coa:ding].
  • RE: Rückgabe / Ausgabe

    Original von Objcler
    Auch wieder wahr. War auch nur ein Vorschlag für den Fall, dass er keine 5345345345 NSLog-Calls austauschen will.

    Ja, so etwas ist zu befürchten.

    Hmmm, gibt es eigentlich auch Refactoring für Funktionsnamen? Müsste ja eigentlich gehen. Ich hab's nie probiert …
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?