jockeeMedlem sedan sep. 200024 inlägg Undrar om system() funktionen, skulle behöva köra ett program med ett argument som är en variabel just nu.
Nån som vet hur man gör? Hittade det här i man sidorna men det hjälper inte direkt, för variablen jag vill skicka är ett heltal och det blir helt fel. int nollan blir char null t.ex.
char *argv[4];
argv[0] = "sh";
argv[1] = "-c";
argv[2] = command;
argv[3] = 0;
execve("/bin/sh", argv, environ);
note: jag ska låna den där stephen prata's bok så ni slipper mig men det är nån dryg en som lånat den, så tills den kommer tillbaks måste jag fråga er.
[Redigerat av jockee den 24 aug 2001]
jsundinMedlem sedan aug. 200086 inlägg Såhär kanske (om du har ett "fast" tal):
argv[3] = "0";
argv[4] = 0;
Alternativt (variabel):
char buf[10];
int tal = 0;
snprintf( buf, sizeof( buf ), "%d", tal );
argv[3] = buf;
argv[4] = 0;
Du kan dock inte direkt peka på heltal, eftersom execve tar charlista.. Annars verkar det enklast med:
char execbuf[1024];
snprintf( execbuf, sizeof( execbuf ), "%s %d", command, tal );
system( execbuf );
UlfTMedlem sedan maj 20018 027 inlägg char *argv[4]; deklarerar en array med fyra pekare mot char.
argv[3] = 0;
ger dig problem eftersom argv[3] är en av dessa pekare. Vad du gjorde var att peka mot NULL. C-strängen argv[3] är därmed tom. Vill du ha talet 0 får du sätta det på följande sätt:
argv[3] = "0";
Programmet "sh" som du anropar, tar alla argument som strängar. Behövs det kommer vissa av argumenten omtolkas till heltal eller vad som nu behövs. Därför är det ingen idé att skicka 0 som heltal redan från början. Detta gäller för övrigt alla program som anropas från kommandoraden.