Windows Funktionen in Linux kompatible Funktionen umschreiben
-
nicht komisch. Umgebungsvariablen werden immer nur an Unterprozesse weitergegeben. Wie gesagt, schreib das export einfach in die ~/.profile oder ~/.bashrc
-
Alles klar,hab ich gemacht und es funktioniert.
Man einziges Problem ist jetzt nur noch, dass sich eben der Browser öffnet und die URL, die in Puffer gespeichert ist, aufruft.rüdiger schrieb:
int main() { char const *browser = getenv("BROWSER"); if(!browser) browser = "..." //... }
Aber was muss denn jetzt genau in brwoser="..." rengeschrieben werden?
Ich hab schon soviel ausprobiert aber nichts funktioniert.browser = "netscape -raise -remote \"openURL(%s,new-window)\":lynx" funktioniert nicht, auch in jeglichen von mir veränderten Varianten.
Das ist jetzt nur noch mein einziges Problem.
-
Funktioniert bei mir ohne Probleme, vielleicht passt ja der Pfad nicht oä?
#include <stdlib.h> #include <stdio.h> int main() { char const *browser = getenv("BROWSER"); if(!browser) browser = "asdf"; printf("%s\n", browser); }
~ % ./browser galeon --new-tab %s:links ~ % unset BROWSER ~ % ./browser asdf ~ %
-
nman schrieb:
Funktioniert bei mir ohne Probleme, vielleicht passt ja der Pfad nicht oä?
#include <stdlib.h> #include <stdio.h> int main() { char const *browser = getenv("BROWSER"); if(!browser) browser = "asdf"; printf("%s\n", browser); }
Wenn ich es so mache, dann gibt er mir nur /usr/bin/firfox aus anstatt den browser zu öffnen.
Und wenn ich
~ % ./browser galeon --new-tab %s:links ~ % unset BROWSER ~ % ./browser asdf ~ %
in die Konsole eingebe, dann werden nur Fehler angezeigt.
Ich versteh nicht, wieso das bei euch funktioniert aber bei mir nicht.Ich will dieses blöde Programm endlich mal fertig kriegen,aber bekomm es einfach nicht hin.
-
Mitdenken ist durchaus erlaubt. Natürlich sollst Du den String nicht ausgeben, sondern das Programm ausführen.
Und der zweite Absatz lässt mich ernsthaft daran zweifeln, ob Du wirklich eine Lösung suchst, oder einfach nur herumtrollst.
-
Ja tut mir leid,aber ich habe vor einer Woche das erste mal was mit Linux zutun gehabt.Deshalb kann ich mit diesem Code
~ % ./browser galeon --new-tab %s:links ~ % unset BROWSER ~ % ./browser asdf ~ %
auch nichts anfangen.deshalb fände ich es äußerst ansprechend,wenn du einen kurzen Kommentar dazu abgeben könntest, was das sein soll.An den Programm sitzt ich inzwischen auch schon seit letzter Woche dran.In Windows hab ich keinerlei Probleme gehabt mit den prog aber in Linux fängt es mich langsam an zu nerven.
-
das hat doch nichts mit Linux zu tun, das du nicht weißt was printf macht... Dir fehlen einfach absolut die Grundlagen und offensichtlich auch das Verständnis. Du musst den String natürlich auslesen und das %s mit der Webseite ersetzen die du aufrufen willst oder wenn kein %s vorhanden ist eben mit einem Space getrennt anhängen. Den resultierenden String musst du dann ausführen mit system. Steht eigentlich auch auf der BROWSER-Homepage. Da findest du vermutlich auch Beispielcode...
-
Danke,die Antwort hilft mir weiter.
Ich habe nicht gesagt, dass ich nicht weiß, was printf macht, sonder dass ich nicht weiß, wofür das hier sein soll~ % ./browser galeon --new-tab %s:links ~ % unset BROWSER ~ % ./browser asdf ~ %
Arbeite im Berufskolleg als auch privat ausschließlich mit cout.Trotzdem kenn ich die Funktionsweise von printf.
-
Ich kriegs einfach nicht hin....
Hab jetzt auch die Schnauze voll von dem Programm
So habs ichs gemacht...//Dynamischer Speicher wird angelegt char* dynamischesArray; char* Puffer=new char[200]; char const *browser = getenv("BROWSER"); dynamischesArray = new char[name.length()+1]; copy(name.begin(), name.end(), dynamischesArray); dynamischesArray[name.length()] = '\0'; Zeit=dynamischesArray[0]; j=2; for (int i=0;i<30;i++) { //Nur die Adresse(ab Stelle 3) ohne Zeit wird übergeben Puffer[i]=dynamischesArray[j]; j++; } if(!browser) browser="Puffer"; printf("%s\n", browser); system(browser); //system(printf("%s\n",browser)); usleep((Zeit*1000)); //usleep(10000); //Speicher wird wieder freigegeben delete[] dynamischesArray; delete[] Puffer; }
Ich gebs auf.Trotzdem nochmal Danke für die Mühe.
Gruß B.D
-
Programmierst Du C oder C++? Entscheide Dich doch bitte für eine der beiden Varianten.
Hier mal der relevante Code ein wenig kommentiert:
char const *browser = getenv("BROWSER"); if(!browser) browser="DefaultBrowserDenDuVerwendenMoechtest"; browserCommand = setzeURLein(erstesZeichenBisErsterDoppelpunkt(browser)); system(browser);
Wobei die Funktion
erstesZeichenBisErsterDoppelpunkt
einfach nur alles nach dem ersten Doppelpunkt abschneidet undsetzeURLein
das%s
durch den von Dir gewünschten URL ersetzt.Den Rest solltest Du alleine hinbekommen, viel mehr können wir Dir nicht mehr vorkauen.