2011-08-17 38 views
12

Trên các hệ thống giống POSIX, có độ dài tối đa cho các đối số dòng lệnh không?Chiều dài tối đa của các tham số ** argv

Để làm rõ, tôi đang tìm chiều dài tối đa là mỗi đối số dòng lệnh, không phải số lượng đối số tối đa.

+0

_POSIX_ARG_MAX ?? –

+0

Tôi nghi ngờ nền tảng đặc biệt của nó. thay vào đó, bạn có thể chuyển dữ liệu đến chương trình của mình thông qua stdin nếu có rất nhiều dữ liệu. –

+0

Không, _POXIX_ARG_MAX là độ dài tối đa cho tất cả các đối số với nhau. –

Trả lời

7

POSIX không xác định độ dài tối đa cho mỗi đối số.

MAX_ARG_STRLEN là hằng số dành riêng cho Linux which was introduced in the 2.6.25 kernel.

Kể từ hạt nhân 2.6.25, MAX_ARG_STRLEN được định nghĩa là 131072 bytes = 32 pages of memory.

(tôi giả sử một pagesize của 4k, đó là trường hợp trừ khi CONFIG_HUGETLB_PAGE được kích hoạt Tôi không chắc chắn như thế nào CONFIG_HUGETLB_PAGE ảnh hưởng MAX_ARG_STRLEN..)

Xem thêm: http://manpages.ubuntu.com/manpages/lucid/man2/execve.2.html

+0

GJ nghiên cứu rằng :-) – cnicutar

+0

cnicutar, xin lỗi câu hỏi ban đầu của tôi không rõ ràng và cảm ơn bạn đã trả lời. Câu trả lời của bạn đã giúp tôi nghiên cứu của tôi. –

Các vấn đề liên quan