gpt4 book ai didi

linux - 提高命令行参数字符串/大小限制 (ARG_MAX) Mac OSX

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:33:24 25 4
gpt4 key购买 nike

我有一个节点脚本,我将一个大的 json 流作为命令行参数传递给它。值得注意的是我正在运行 Mac OSX High Sierra

脚本无法运行,因为这个错误:

-bash:/usr/local/bin/node: 参数列表太长

阅读后,这是我在 ARG_MAX 或 MAX_ARG_STRLEN 中的限制造成的根据 https://www.in-ulm.de/~mascheck/various/argmax/

我试图在此处的配置文件中提高这些限制 /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/syslimits.h

这是我从 (256 * 1024) 提高了 ARG_MAX 大小的文件的一部分,并且我添加了 MAX_ARG_STRLEN配置。

#define ARG_MAX        (512 * 1024) /* max bytes for an exec function */
#define MAX_ARG_STRLEN (PAGE_SIZE * 64)
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
#define CHILD_MAX 266 /* max simultaneous processes */
#define GID_MAX 2147483647U /* max value for a gid_t (2^31-2) */
#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
#define LINK_MAX 32767 /* max file link count */
#define MAX_CANON 1024 /* max bytes in term canon input line */
#define MAX_INPUT 1024 /* max bytes in terminal input */
#define NAME_MAX 255 /* max bytes in a file name */
#define NGROUPS_MAX 16 /* max supplemental group id's */
#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
#define UID_MAX 2147483647U /* max value for a uid_t (2^31-2) */

#define OPEN_MAX 10240 /* max open files per process - todo, make a config option? */

#endif /* (_POSIX_C_SOURCE && !_DARWIN_C_SOURCE) */
#define PATH_MAX 1024 /* max bytes in pathname */
#define PIPE_BUF 512 /* max bytes for atomic pipe writes */

#define BC_BASE_MAX 99 /* max ibase/obase values in bc(1) */
#define BC_DIM_MAX 2048 /* max array elements in bc(1) */
#define BC_SCALE_MAX 99 /* max scale value in bc(1) */
#define BC_STRING_MAX 1000 /* max const string length in bc(1) */
#define CHARCLASS_NAME_MAX 14 /* max character class name size */
#define COLL_WEIGHTS_MAX 2 /* max weights for order keyword */
#define EQUIV_CLASS_MAX 2
#define EXPR_NEST_MAX 32 /* max expressions nested in expr(1) */
#define LINE_MAX 2048 /* max bytes in an input line */
#define RE_DUP_MAX 255 /* max RE's in interval notation */

#if __DARWIN_UNIX03
#define NZERO 20 /* default priority [XSI] */
/* = ((PRIO_MAX - PRIO_MIN) / 2) + 1 */
/* range: 0 - 39 [(2 * NZERO) - 1] */
/* 0 is not actually used */
#else /* !__DARWIN_UNIX03 */
#define NZERO 0 /* default priority */
/* range: -20 - 20 */
/* (PRIO_MIN - PRIO_MAX) */
#endif /* __DARWIN_UNIX03 */
#endif /* !_ANSI_SOURCE */

#endif /* !_SYS_SYSLIMITS_H_ */

在这些更改之后,我的包含 330,000 个字符的文件仍然失败。运行节点脚本后,该文件为 300kb

感谢您的专业知识!我不确定这是否是由字符串大小或 arg 大小溢出引起的(有什么区别?)无论哪种方式,我都没有找到使其工作的方法

最佳答案

这些值无法在 Mac OS X 内核中更改。

关于linux - 提高命令行参数字符串/大小限制 (ARG_MAX) Mac OSX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48014798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com