/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
system call i Linux, retur værdi
Fra : Jacob Eisenhardt


Dato : 17-05-03 14:31

hej

Hvordan for man en retur værdi med tilbage i sit program

Jeg laver et system kald til et andet program "snmpget" med nogle parameter

det returere en int = 8

hvordan kan jeg få den "int" retur værdi ind i mit program,
den måde jeg bruger nu, får jeg bare 0 eller 1 tilbage alt efter om det er
gået godt.

*** snip ****

sprintf(command, "./snmpget %s -Cf -c public %s %s", version, IP, OID );
i = system(command);
return i;
}
******



 
 
Jacob Bunk Nielsen (17-05-2003)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 17-05-03 14:40

"Jacob Eisenhardt" <icenhard@"slet"hotmail.com> writes:

> Hvordan for man en retur værdi med tilbage i sit program

Har du prøvet at læse system(3)?

Der står blandt andet:

,----[ Udsnit af system(3) ]
| RETURN VALUE
| The value returned is -1 on error (e.g. fork failed), and
| the return status of the command otherwise. This latter
| return status is in the format specified in wait(2).
| Thus, the exit code of the command will be WEXITSTA-
| TUS(status). In case /bin/sh could not be executed, the
| exit status will be that of a command that does exit(127).
|
| If the value of string is NULL, system() returns nonzero
| if the shell is available, and zero if not.
|
| system() does not affect the wait status of any other
| children.
`----

Der er også et enkelt eksempel.

--
Jacob - www.bunk.cc
A tautology is a thing which is tautological.

Jacob Eisenhardt (17-05-2003)
Kommentar
Fra : Jacob Eisenhardt


Dato : 17-05-03 15:45

JO TAK for svaret men hvordan anvender jeg det

jeg kan ikke helt gennemskue det jeg har læst på "man system"
Jeg har siden fundet ud af det ikke kun er en "int" med en string jeg får
tilbage

Er der nogle der kan hjælpe med lidt kode hvor man får en string retur

hilsen
jacob




"Jacob Eisenhardt" <icenhard@"slet"hotmail.com> wrote in message
news:ba5div$ocs$1@sunsite.dk...
> hej
>
> Hvordan for man en retur værdi med tilbage i sit program
>
> Jeg laver et system kald til et andet program "snmpget" med nogle
parameter
>
> det returere en int = 8
>
> hvordan kan jeg få den "int" retur værdi ind i mit program,
> den måde jeg bruger nu, får jeg bare 0 eller 1 tilbage alt efter om det er
> gået godt.
>
> *** snip ****
>
> sprintf(command, "./snmpget %s -Cf -c public %s %s", version, IP, OID );
> i = system(command);
> return i;
> }
> ******
>
>



Robert Larsen (17-05-2003)
Kommentar
Fra : Robert Larsen


Dato : 17-05-03 15:56

Jacob Eisenhardt wrote:
> JO TAK for svaret men hvordan anvender jeg det
>
> jeg kan ikke helt gennemskue det jeg har læst på "man system"
> Jeg har siden fundet ud af det ikke kun er en "int" med en string jeg får
> tilbage
>
> Er der nogle der kan hjælpe med lidt kode hvor man får en string retur
>

Øhmm....what ?
Det, der returneres med system(), er altid en int, og det er som nævnt
enten -1, hvis eksekveringen af programmet ikke gik godt, og ellers får
du, hvad programmet returnerede. Programmer kan ikke returnere strenge,
så jeg ved ikke helt, hvad du mener.

Hvis du vil konvertere din integer til en streng, kan du bruge
sprintf(), som du også brugte før. Hvis du vil læse, hvad programmet
skrev til standard out, kan du bruge popen() fread() og pclose().

Robert


Jacob Bunk Nielsen (17-05-2003)
Kommentar
Fra : Jacob Bunk Nielsen


Dato : 17-05-03 17:09

"Jacob Eisenhardt" <icenhard@"slet"hotmail.com> writes:

> JO TAK for svaret men hvordan anvender jeg det
>
> jeg kan ikke helt gennemskue det jeg har læst på "man system"

OK, her er et lille eksempel:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>

int main() {
int status = system("exit 27");
printf("status: %d\n", WEXITSTATUS(status));
return 0;
}

Det program udskriver "status: 27".

> Jeg har siden fundet ud af det ikke kun er en "int" med en string jeg får
> tilbage

Ehhh, det må du lige forklare. Kan du ikke komme med noget kode der
illustrerer dit problem?

> Er der nogle der kan hjælpe med lidt kode hvor man får en string retur

Nej, desværre. Det er jo dig der har den kode, så den må du bidrage
med

P.S. <http://www.usenet.dk/netikette/citatteknik.html>

--
Jacob - www.bunk.cc
You're a card which will have to be dealt with.

Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408193
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste