ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > system / noixemul | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
-1- | [ - Beitrag schreiben - ] |
19.07.2004, 22:04 Uhr Mazze Posts: 263 Nutzer |
Hi,code:#include <stdlib.h> #include <stdio.h> int main (void) { int r; r = system("EditPad"); printf("Rück %dn", r); return 0; } Dieses Beispiel funktioniert, wenn ich mit "-noixemul" kompiliere. Ohne diese Option wird der Editor nicht gestartet und r den Wert 32512. Ich habe schon versucht, den Linux-Pfad anzugeben (/sys/tools/editpad). Klappt aber nicht. Wie geht es? MFG Matthias [ - Antworten - Zitieren - Direktlink - ] |
20.07.2004, 02:49 Uhr whose Posts: 2156 Nutzer |
Ähm, das ist jetzt blanke Spekulation, weil ich mich mit ixemul aus Prinzip nicht beschäftigt habe, aber kann es sein, daß der Wert von r darauf hindeutet, daß das Prog schon gestartet ist, aber halt nicht korrekt? War es nicht so, das system() vor allem dazu dient, ausführbare (Unix)Programme in einer sh-Umgebung zu starten? Da paßt EditPad nun ja nicht gerade hinein, oder? Versuch doch mal, ein simples CLI-only-Programm damit zu starten, das müßte dann eigentlich tun. Grüße [ - Antworten - Zitieren - Direktlink - ] |
20.07.2004, 08:07 Uhr Solar Posts: 3680 Nutzer |
system() übergibt den String an die OS-spezfische Kommandozeile. Ob das nun eine DOS-Box, eine sh/bash, ksh, oder AmigaDOS ist, spielt keine Rolle. Du könntest mal einen Nullpointer an system() übergeben, damit prüfst Du quasi die "Verfügbarkeit" der Shell: 0 heißt, daß keine Shell aufgerufen werden konnte. [ - Antworten - Zitieren - Direktlink - ] |
20.07.2004, 20:52 Uhr Mazze Posts: 263 Nutzer |
Wenn ich 'system' mit NULL aufrufe, erhalte ich in beiden Fällen das Ergebnis '1'. [ - Antworten - Zitieren - Direktlink - ] |
22.07.2004, 08:14 Uhr gni Posts: 1106 Nutzer |
Zitat:Gennau so :) Ich habe das Beispiel (ohne printf) ausprobiert und es ging, wenn editpad im Suchpfad war. Bei Angabe des Pfades (entweder sys:tools/ oder /sys/tools/) hat es wie erwartet funktioniert. Gibt es auf Deinem System in env: eine PATH Variable? Wenn nicht dann prüf in der sh (ausführen und dann echo $PATH) welchen Wert die Variable hat. [ - Antworten - Zitieren - Direktlink - ] |
22.07.2004, 12:18 Uhr whose Posts: 2156 Nutzer |
*stirnklatsch* Ich bin viel zu verwöhnt von der Möglichkeit, den Suchpfad vorzugeben, merke ich gerade. Sollte ich mal wieder ein bißchen zurückfahren und Pfade selbst eintackern, dann fällt mir sowas vielleicht wieder früher auf Grüße [ - Antworten - Zitieren - Direktlink - ] |
22.07.2004, 12:51 Uhr gni Posts: 1106 Nutzer |
Zitat:Bei ixemul ist es /leicht/ anders. Da ist nicht c:path entscheidend, sondern $PATH der /bin/sh. Das sollte man bei ixemul (der UN*X Emulation) beachten. [ - Antworten - Zitieren - Direktlink - ] |
22.07.2004, 12:58 Uhr whose Posts: 2156 Nutzer |
Zitat: Naja, das _Prinzip_ ist das Gleiche Aber trotzdem: Wieder was gelernt! Danke Dir Grüße [ - Antworten - Zitieren - Direktlink - ] |
22.07.2004, 21:52 Uhr Mazze Posts: 263 Nutzer |
code:7.Workbench:> dir env:path Could not get information for env:path Objekt nicht gefunden 7.Workbench:> sh # echo $PATH /bin:/usr/bin:/usr/ucb Wie geht es weiter? [ - Antworten - Zitieren - Direktlink - ] |
23.07.2004, 09:16 Uhr gni Posts: 1106 Nutzer |
Zitat:Macht es Sinn sichmit c:dir ein datei anzuzeigen? Versuchs mal c:list env:path (oder nur env: aber dann geht auch dir :) Zitat:Das sieht nach den Satnadrdeinstellungen aus (also kein env:path) Zitat:system("/sys/tools/editpad") oder halt system("sys:tools/editpad") sollte Editpad ausführen bei Verwendung der ixemul. Bei -noixemul gehts ohne Pfad oder mit dem Amigapfad, da indem Fall die Einstellung von c:path des Vaterprozesses deines Programmes (entweder eine Shell oder die WB) auschlaggebend ist. [ - Antworten - Zitieren - Direktlink - ] |
23.07.2004, 23:40 Uhr Mazze Posts: 263 Nutzer |
code:5.Work:CProj> c:list env:path No information for "env:path": Objekt nicht gefunden 5.Work:CProj> code:#include <stdlib.h> #include <stdio.h> int main (void) { int r; r = system("/SYS/Tools/EditPad"); printf("Rück %dn", r); r = system("SYS:Tools/EditPad"); printf("Rück %dn", r); return 0; Ohne -noixemul hat r in beiden Fällen den Wert 32512. Ich habe auch schon probiert, statt der VNC-Shell die normale zu nehmen: keine Änderung. [ - Antworten - Zitieren - Direktlink - ] |
24.07.2004, 12:01 Uhr Palgucker Posts: 1342 Nutzer |
@ Mazze Hab das ganze auch mal probiert, und ich muss sagen, Du bist nicht allein. An ENV-Variablen scheint es nicht zu liegen, denn die werden (laut SnoopDos) garnicht erst abgefragt. Benenne ich aber Editpad in sh um, bekomme ich zumindest den RC 5120 und die Fehlermeldung: Falsche Anzahl an Argumenten Erst wenn ich die Quelltextzeile r = System("Editpad"); in r = System(""); ändere, startet Editpad und öffnet die Datei -c. Also merkwürdig ist das schon, zumal man das aufzurufende Programm in sh umbenennen muss, ein alias reicht nicht. mfg Palgucker [ - Antworten - Zitieren - Direktlink - ] |
24.07.2004, 12:16 Uhr Solar Posts: 3680 Nutzer |
Da würde sich evtl. anbieten, mal "sh" zu starten, und zu versuchen, aus sh EditPad aufzurufen. Denn was Palgucker hier bewiesen hat, ist, das system() durchaus korrekt das Executable "sh" aufruft - das Problem liegt also irgendwo "auf der anderen Seite". Habt ihr evtl. kein sh installiert / eingerichtet? [ - Antworten - Zitieren - Direktlink - ] |
24.07.2004, 13:43 Uhr Palgucker Posts: 1342 Nutzer |
@ Solar qoute: Habt ihr evtl. kein sh installiert / eingerichtet? Bingo Hab auch schon nach einen Binary namens sh 'rumgesucht, aber nichts gefunden. Im sh-util Paket ist es auch nicht d'rin. Vielleicht kann mir da einer auf die Sprünge helfen? mfg Palgucker Nachtrag: Habe nun sh in der Boot.lha gefunden, in ein Verzeichnis im Suchpfad kopiert - und voila, es funktioniert wie es soll. [ Dieser Beitrag wurde von Palgucker am 24.07.2004 editiert. ] [ - Antworten - Zitieren - Direktlink - ] |
25.07.2004, 21:20 Uhr Mazze Posts: 263 Nutzer |
Wenn ich folgendes in eine Shell eingebe:code:5.Work:CProj> sh # /sys/tools/editpad # sys:tools/editpad dann startet der Editor in beiden Fällen. [ - Antworten - Zitieren - Direktlink - ] |
26.07.2004, 00:49 Uhr Palgucker Posts: 1342 Nutzer |
@ Mazze quote: Wenn ich folgendes in eine Shell eingebe: code:5.Work:CProj> sh # /sys/tools/editpad # sys:tools/editpad dann startet der Editor in beiden Fällen. [ Ich gehe mal davon aus, das Editpad aus Deinem Programm heraus immer noch nicht startet. Liegt das Verzeichnis Work:CProj/ im AmigaDos Suchpfad ? Wenn nicht, tippe doch probeweise in eine Shell path Work:CProj add und starte dann Dein Programm. mfg Palgucker [ - Antworten - Zitieren - Direktlink - ] |
26.07.2004, 17:08 Uhr gni Posts: 1106 Nutzer |
Zitat:Ha, reingefallen! ixemul puffert env:, da das Auslesen eines Verzeichnisses langsam ist. Zitat:Was versuchst Du? Du kannst nicht ein beliebigen Programm sh nennen! ixemul ist eine _un*x Emulation_ und verhält sich entsprechend. Zitat:Weil das Argument von system() an die sh per -c übergeben wird. Zitat:Keine Ahnung was bei Euch das Problem ist. Hier funktioniert es wie es soll. Vermutlich ist es nur im Posting falsch, aber die Funktion heisst system (kleines s). Gibt es bei Dir ein env:PATH? [ Dieser Beitrag wurde von gni am 26.07.2004 editiert. ] [ - Antworten - Zitieren - Direktlink - ] |
26.07.2004, 17:14 Uhr gni Posts: 1106 Nutzer |
[quote] Palgucker: Zitat:Immerhin etwas ;-) Was ist wenn Du einer der beiden Zeilen ins Programm übernimmst? Wenns direkt in der sh geht, sollte es auch per programm gehen. Zitat:Der AmigaDOS Pfad ist für ixemul _irrelavant_. Bei einem absoluten Pfad ist der AmigaDOS Pfad auch bedeutungslos. [ - Antworten - Zitieren - Direktlink - ] |
26.07.2004, 20:04 Uhr Palgucker Posts: 1342 Nutzer |
@ gni quote: Ha, reingefallen! ixemul puffert env:, da das Auslesen eines Verzeichnisses langsam ist. Jupp - nach einem flushlibs und damit verbundenen neuladen der ixemul.library konnte ich's nun auch deutlich sehen. Wieder was gelernt. quote: Was versuchst Du? Du kannst nicht ein beliebigen Programm sh nennen! ixemul ist eine _un*x Emulation_ und verhält sich entsprechend. Auf meinen Rechner kann ich sh nennen, was ich will. Aber im ernst, diese Aktionen waren auch nur Versuche ohne tiefere Bedeutung. Aber zumindest hat es die Wirkung gehabt, das es bei Solar gleich klick gemacht hat und er fragte, ob ich denn überhaupt sh installiert habe. Tja, und da ich sh noch nicht mal auf Platte hatte, war dieses eben die Lösung für mich. quote: Weil das Argument von system() an die sh per -c übergeben wird. Das ist mir nun auch klar - sprich ein Aufruf im Qellcode ala r = system("Sys:Tools/Editpad"); entspricht dem Aufruf aus einer Amigashell >sh -c sys:Tools/Editpad quote: Keine Ahnung was bei Euch das Problem ist. Hier funktioniert es wie es soll. Vermutlich ist es nur im Posting falsch, aber die Funktion heisst system (kleines s). Gibt es bei Dir ein env:PATH? Bei mir funktioniert es nun ja auch. Mit (r=system(Editpad) und ohne (r=system(Sys:Tools/Editpad) ENV:PATH (Sys:Tools/). Ein Fallstrick könnte hierbei aber die Pufferung der ENV-Variablen durch ixemul sein, da Änderungen erst nach einen flush der ixemul.library wirksam werden. quote: Der AmigaDOS Pfad ist für ixemul _irrelavant_. Bei einem absoluten Pfad ist der AmigaDOS Pfad auch bedeutungslos. Dem möchte ich mal wiedersprechen. Wohlgemerkt geht es hier nicht um Editpad, sondern um das finden des Programms sh. Und dazu werden alle Verzeichnisse im Amigados Suchpfad "abgeklappert". Und das ist wahrscheinlich das Problem bei Mazze, das sh einfach nicht gefunden wird, weil sh in irgendeinem Verzeichnis "rumlungert", in dem nicht gesucht wird mfg Palgucker [ - Antworten - Zitieren - Direktlink - ] |
27.07.2004, 18:39 Uhr obw Posts: 94 Nutzer |
Zitat: Was hat der Consolen-Handler mit dem Pfad zu tun? Und warum hast Du nicht auch noch KingCON ausprobiert? SCNR OBW [ - Antworten - Zitieren - Direktlink - ] |
27.07.2004, 22:10 Uhr Mazze Posts: 263 Nutzer |
Jetzt gehts. Ich musste mit dem AmigaDos-Kommando "path" das Verzeichnis, in dem "sh" steht, einbinden. Ich bedanke mich für eure Hilfe. @ Komiker obw: Wenn man nach einem Fehler sucht, dann gehört die Verwendung von nicht standardmäßigen Tools zu den möglichen Fehlerquellen. Es könnte durchaus sein, dass die VNC-Shell nicht 100% kompatibel zur Shell ist. [ - Antworten - Zitieren - Direktlink - ] |
28.07.2004, 09:24 Uhr gni Posts: 1106 Nutzer |
Zitat:Ups, gg:bin ist bei mir natürlich im Pfad. Hast Du ein bin: assign? Beides gehört zu einer "Standard"-Installation von GG. Wieso fehlte das Verzeichnis? AFAIK, müsstes es auch ohne bin: im AmigaDOS Pfad gehen, da die sh in /bin(=bin:) gesucht wird. In diesem Fall bin ich mir aber nicht ganz sicher, was die ixemul genau tut. [ - Antworten - Zitieren - Direktlink - ] |
01.08.2004, 11:07 Uhr Mazze Posts: 263 Nutzer |
Sorry für die späte Antwort. Die Installation von der GoldEd-CD weicht möglicherweise vom Standard ab. So sehen meine gg-relevanten assigns aus:code:var usr man info etc bin local gg Work:devkits/compilers/gcc/classic/latest C Workbench:C + Work:devkits/tools/cprefs/bin + Work:devkits/tools/ccselect/bin + Work:devkits/tools/make/bin + Programme:Develop/BASIC/c + Work:devkits/compilers/gcc/classic/latest/bin + Work:devkits/compilers/vbcc/classic/latest/bin S Workbench:S + Work:devkits/compilers/gcc/classic/latest/sys/s LIBS Workbench:Libs + Workbench:Classes + Programme:Werkzeuge/MUI/Libs + Programme:Develop/golded/etc/libs + Programme:Develop/BASIC/libs + Work:devkits/compilers/gcc/classic/latest/sys/libs DEVS Workbench:Devs + Work:devkits/compilers/gcc/classic/latest/sys/devs FONTS Workbench:Fonts + Programme:Develop/golded/etc/fonts L Workbench:L + Work:devkits/compilers/gcc/classic/latest/sys/l [ Dieser Beitrag wurde von Mazze am 01.08.2004 editiert. ] [ - Antworten - Zitieren - Direktlink - ] |
-1- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > system / noixemul | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |