Re: Max Länge Commandline?

Datumsansicht Baumansicht Betreffansicht Attachement-Sicht

From: Christian Weisgerber (naddy_at_mips.rhein-neckar.de)
Date: 17. Jun 1999


Mark Seuffert Pirates <captain_at_pirate.de> wrote:

> ich frage mich ob es eine maximale Anzahl an Zeichen gibt, die ich per
> "Commandline Arguments" an ein Programm/Script übergeben kann?

Ja. Das ist ein gemeinsamer Speicherbereich für Argumente und
Environment-Variablen. Er schwankt je nach Unix und Kernelkonfiguration
zwischen wenigen kB und einigen MB. Wenn ich das richtig sehe, dann sind
das z.B. unter
- 4.4BSD Lite 20kB
- FreeBSD 4.0-CURRENT 64kB
- OpenBSD 2.5 256kB

> Bei 'man bash' habe ich nichts gefunden.

Falsche Stelle. Die Beschränkung betrifft execve(2). Ist dort aber auch
nicht unbedingt dokumentiert.

> Ich möchte einfach nur zur Sicherheit wissen, ab wieviel Zeichen ich eine
> Parameterübergabe anders (z.B. STDIN/File/Pipe) abwickeln müsste.

POSIX gibt ein Minimum von 4kB vor.

> Vielleicht weiss auch jemand von Euch, wie _genau_ der Mechanismus der
> Parameterübergabe (bei Linux oder anderen Unixen) funktioniert?

Naja, der Aufrufer übergibt die Daten an execve(2). Wenn das neue Image
dann ausgeführt wird, liegen die Daten oberhalb des (nach unten
wachsenden) Userstacks. main() bekommt die Zeiger darauf als Parameter
übergeben, genau oberhalb des initialen Stackpointers. So ist das
jedenfalls bei 4.4BSD; ich nehme aber an, dass es allgemein ähnlich ist.

-- 
Christian "naddy" Weisgerber                  naddy_at_mips.rhein-neckar.de
  See another pointless homepage at <URL:http://home.pages.de/~naddy/>.


Datumsansicht Baumansicht Betreffansicht Attachement-Sicht

Dieses Archiv wurde generiert von hypermail 2.1.2 : 11. Mar 2002 CET