Toon posts:

[kylix3] libc.system('commando') retourneert altijd '5'?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Goedenavond linux-freaks en kylix-kenners!

Ik ben aan het spelen met kylix (misschien hebben jullie m'n vorige topic ook wel gezien), en ik probeer nu een externe applicatie aan te roepen. Gewoon: simpel een browser (mozilla bijv.) openen. Ik doe dus:

code:
1
retvalue := libc.system('mozilla www.tweakers.net');


Vervolgens gebeurt er niets (ook geen foutmelding ofzo), en krijgt retvalue als waarde '5'. Welk commando ik ook uitvoer: altijd een retourwaarde van 5 en er gebeurt niets! Volgens de documentatie van system(3) is er een shell beschikbaar, als
code:
1
libc.system(nil);

een waarde anders dan nul retourneert. Nu is die waarde bij mij dus nul! Er is geen shell beschikbaar! Wat houdt dit nu precies in? Ik kan gewoon een consolewindow openen met bash erin, en sh werkt ook goed. Iemand een oplossing voor dit vervelende probleem? Overigens werken andere methodes om een applicatie uit te voeren ook niet bij mij (popen en fork). Ik heb echter niets ingewikkelds nodig, dus een libc.system() volstaat!

Verwijderd

Topicstarter
Is er niemand die hier een idee over heeft?

  • NaliXL
  • Registratie: Maart 2002
  • Laatst online: 30-07 19:19
Al geprobeerd een absoluut pad te gebruiken naar het programma wat je uitvoert? Misschien kan je gewoon geen gebruik maken van environment-variables, zoals o.a. je path....

Genoeg is meer dan veel, en tart den overvloed


Verwijderd

Topicstarter
Maar het feit dat ik bij een
code:
1
libc.system(nil)


Al iets verkeerds terugkrijg, dat wijst op het onbeschikbaar zijn van een shell, betekent dat ik helemaal niets kan (toch?)

Verwijderd

Topicstarter
Heeft ook niemand enig idee wat het kan betekenen dat ik geen shell tot m'n beschikking heb?

  • NaliXL
  • Registratie: Maart 2002
  • Laatst online: 30-07 19:19
Ik moet eerlijk bekennen dat ik deze functie niet ken, maar ik probeer alleen mezelf nuttig te maken.

Dat NIL meegeven aan de functie een fout oplevert, hoeft denk ik niets te betekenen. NIL is immers geen programma, terwijl deze functie (voor zover ik uit dit topic opmaak) bedoeld is om programma's uit te voeren.

Dus nogmaals : levert een absoluut pad ook een foutcode op? En weet je overigens ook heel zeker dat wat je uitvoert niet gestart word (kan het zijn dat je proces verborgen blijft o.i.d.?, kijk een met ps -A)....

Genoeg is meer dan veel, en tart den overvloed


Verwijderd

Topicstarter
Ik heb een aantal sites bekeken, en de man-page van system(). In die manpage wordt als voorbeeld die 'nil' functie gebruikt om aan te geven of er een shell is of niet. Ik heb ook al geprobeerd om een abs pad te gebruiken, dat werkt ook niet.
Ik heb ook geprobeerd om bijvoorbeeld het commando 'ls &> /tmp/lstmp' uit te voeren, maar daar krijg ik geen output van, dus ik denk dat er uberhaupt geen dingen uitgevoerd worden.
Zoeken in nieuwsgroepen leverde me één exact match op (dus iemand met hetzelfde probleem), maar die topic was én zweeds én het probleem bleef onopgelost...
NaliXL: ook al weet je niet precies wat de functie is, bedankt voor de hulp die je me biedt!
Wat ik eigenlijk wil weten: wat betekent het feit dat er 'geen shell' is?

  • NaliXL
  • Registratie: Maart 2002
  • Laatst online: 30-07 19:19
Okee, 'k ben ff wat aan 't zoeken geweest, en vond o.a. het volgende :
If string is NULL (0), the system() function tests the accessibility of
the sh command interpreter.

If string is not NULL, the system() function passes the parameter to
the sh command, which interprets string as a command and executes it.
Het lijkt er dus op dat libc.system problemen heeft om sh te vinden, om even wat specifieker te zijn. Nou ben ik geen linux-expert, maar sh is toch een shell, zoals bijv. ook Bash? Check eens of sh geïnstalleer is, en zo ja : probeer eens op verschillende min of meer logische locaties een symlink te maken naar sh. Een logische plaats (waar bijna altijd als eerste gezocht word) zou bijvoorbeeld de directory met je executable kunnen zijn. Misschien dat dat je probleem verhelpt.

Genoeg is meer dan veel, en tart den overvloed


Verwijderd

Topicstarter
sh is geinstalleerd en helemaal up-to-date in /bin/sh. Ik heb een symlink gemaakt in de directory bij de executable, maar dat helpt ook niets!
Pagina: 1