von c-Programm auf Kommandozeilentool zugreifen

  1. mrelan

    mrelan Thread Starter MacUser Mitglied

    Mitglied seit:
    26.06.2005
    Beiträge:
    685
    Zustimmungen:
    0
    Hi,
    es ist bestimmt ganz einfach, aber ich habe dazu nichts gefunden, wahrscheinlich weil es zu einfach ist. Das Problem:
    Ich möchte aus einem Carbon-Programm (das ich mit XCode in c schreibe) auf ein Kommandozeilentool zugreifen (das z.B. im gleichen Ordner liegt wie mein Programm). Das heißt, ich will das Tool aufrufen wie in der shell und seine Ausgabe in meinem Programm als Variable verwenden.
    Warum ich es nicht direkt integriere? Nun, das Tool ist nicht von mir :)
    Zur Beruhigung: Ich will es nicht in irgendeiner Form „redistributen” oder so, einfach nur seine Fähigkeiten für mein Programm nutzen. Kann mir da jemand helfen?
    Gruß
     
    mrelan, 17.02.2006
    #1
  2. wegus

    wegus MacUser Mitglied

    Mitglied seit:
    13.09.2004
    Beiträge:
    14.982
    Zustimmungen:
    1.545
    system oder exec heißen solche funktionen meist!
     
    wegus, 17.02.2006
    #2
  3. mrelan

    mrelan Thread Starter MacUser Mitglied

    Mitglied seit:
    26.06.2005
    Beiträge:
    685
    Zustimmungen:
    0
    Vielen Dank schon mal für die schnelle Antwort. Die Funktionen system, execl, execv, execle, execve, execlp, execvp und wie sie alle heißen scheinen da alle ganz ähnlich zu funktionieren; einziges Problem: Sie liefern nicht die Ausgabe zurück :(
    Was hilft es mir, wenn ich weiß ob der Aufruf erfolgreich war, ich will das Ergebnis wissen. Kann ich da irgendwie drauf zugreifen?
    Danke!
     
    mrelan, 17.02.2006
    #3
  4. janosch

    janosch MacUser Mitglied

    Mitglied seit:
    24.10.2003
    Beiträge:
    1.305
    Zustimmungen:
    6
    HI!

    Was genau gibt den das Tool aus? Vielleicht kannst du ja die Ausgabe des Tools umleiten in eine .dat Datei "tool >> test.dat" und dann die .dat Datei auslesen.
     
    janosch, 17.02.2006
    #4
  5. mrelan

    mrelan Thread Starter MacUser Mitglied

    Mitglied seit:
    26.06.2005
    Beiträge:
    685
    Zustimmungen:
    0
    Ok. Also vielleicht kennt ihr diese Seite hier: http://www.kernelthread.com/software/ams2hid/ams2hid.html
    Im Prinzip geht es mir darum, genau das zu tun, was der Autor vorschlägt:
    "AMSTracker can be used as a fundamental building block to create arbitrary applications that do something interesting based on the computers orientation".
    Ich bin dabei so eine "arbitrary application" zu schreiben und alles was ich darin brauche sind die drei Zahlen, die amstracker ausgibt, weil ich nicht weiß wie ich selbst daran komme und nicht glaube daß der Autor mir den Quelltext gibt ;)
    Was mein Programm genau macht will ich nicht verraten, aber wenn es fertig ist kann ich es hier mal zur Begutachtung und allgemeinen Erheiterung posten :)

    Edit: Oh, ich seh grad die Seite wurde aktualisiert! Es gibt jetzt ein tool, das die Orientierung direkt in eine Keyboardeingabe übersetzt, wenn ich das richtig verstanden hab. Vielleicht geht es ja auch damit. Trotzdem schon mal Danke für jede Hilfe! :)

    Edit: Danke für den Tip janosch, das mit der Datei ist im Prinzip eine gute Idee, nur in dem Fall nicht praktikabel weil das ganze auch noch in Echtzeit passieren muss (im Takt, den die Grafikkarte vorgibt). Es wäre deshalb geschickt, es direkt und nicht über den Umweg Festplatte zu verrechnen.
     
    mrelan, 17.02.2006
    #5
  6. BalkonSurfer

    BalkonSurfer MacUser Mitglied

    Mitglied seit:
    27.07.2003
    Beiträge:
    5.157
    Zustimmungen:
    1
    Gibt's da popen?
     
    BalkonSurfer, 17.02.2006
    #6
  7. mrelan

    mrelan Thread Starter MacUser Mitglied

    Mitglied seit:
    26.06.2005
    Beiträge:
    685
    Zustimmungen:
    0
    yeah! Das scheint zu funktionieren. Danke!
     
    mrelan, 17.02.2006
    #7
  8. mrelan

    mrelan Thread Starter MacUser Mitglied

    Mitglied seit:
    26.06.2005
    Beiträge:
    685
    Zustimmungen:
    0
    Seltsames Verhalten von XCode

    Sorry daß ich nochmal nerven muss. Das mit popen klappt super, aber jetzt habe ich ein ganz anderes Problem:
    Wenn ich in XCode auf "Build and go" gehe, geht alles wunderbar. Doppelklicke ich aber direkt die Anwendung.app (im XCode Projektordner oder direkt im Finder), dann startet zwar auch die Anwendung, aber es passiert nichts, denn er findet das tool amstracker nicht, obwohl es im richtigen Ordner liegt. XCode findet es ja auch.
    Wie kann es sein, daß bei "build and go" überhaupt etwas anderes passiert, als bei einfach nur go, wenn es schon gebuildet ist? Das verstehe ich nicht...
     
    mrelan, 18.02.2006
    #8
  9. Jan-Michael

    Jan-Michael MacUser Mitglied

    Mitglied seit:
    28.02.2005
    Beiträge:
    391
    Zustimmungen:
    0
    Hallo mrealn,

    ich denke, dass die Lösung für dein Problem relativ einfach ist. Wie allerdings die Diskrepanz zwischen "Build and Go" und dem Finder zustande kommt weiß ich auch nicht. Fakt ist nur, dass .app-Programme in Wirklichkeit Ordner mit einer eigenen Struktur sind. Die Ausführbare Datei - also das richtige c-Programm sollte im Mac OS-Ordner stehen. Daher musst du in den Path erst noch "../../" einfügen, um erstmal aus den Unterordnern raus zu kommen.
     
    Jan-Michael, 19.02.2006
    #9
  10. mrelan

    mrelan Thread Starter MacUser Mitglied

    Mitglied seit:
    26.06.2005
    Beiträge:
    685
    Zustimmungen:
    0
    Danke Jan-Michael, aber es geht nicht. Wenn ich "./amstracker angebe, dann läuft es im XCode richtig, im finder nicht. Wenn ich "../../amstracker" angebe, läuft es weder in XCode noch im Finder. XCode sagt dann auch: "no such file or directory". Habe auch "../../../amstracker" versucht, weil es nach meiner Logik eigentlich drei ebenden drüber liegen müsste (.app -> Contents -> MacOS), aber es geht trotzdem nicht. Echt seltsam. Zum Glück habe ich eine alte Version, bei der es noch ging, weiß auch nicht was ich seitdem falsch gemacht habe.
     
    mrelan, 19.02.2006
    #10
Die Seite wird geladen...