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.
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.
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
GJ nghiên cứu rằng :-) – cnicutar
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. –
_POSIX_ARG_MAX ?? –
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. –
Không, _POXIX_ARG_MAX là độ dài tối đa cho tất cả các đối số với nhau. –