---
title: "system() och argument"
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/28075-system-och-argument"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "jockee"
published: "2001-08-23T22:53:00.000Z"
updated: "2001-08-24T13:37:00.000Z"
replies: 2
views: 338
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/c-cpp/28075-system-och-argument"
---

# system() och argument

## #1 — jockee, 2001-08-23T22:53Z

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\]

Permalänk: https://www.webforum.nu/p/28075

## #2 — jsundin, 2001-08-24T11:37Z

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 );

Permalänk: https://www.webforum.nu/p/401134

## #3 — UlfT, 2001-08-24T13:37Z

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.

Permalänk: https://www.webforum.nu/p/401135

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/28075-system-och-argument
