【发布时间】:2019-04-13 15:08:39
【问题描述】:
一个字符串可以传递给system()多长时间?
我知道 POSIX 最小值是 4096,但我想知道我可以使用的实际大小。是否在任何标头中为此定义了任何宏,类似于FILENAME_MAX?
char cmd[SOME_MACRO];
...
system(cmd);
【问题讨论】:
-
开始担心你的字符串是否超过 100 KiB。在那之前,你应该没事。
-
如果这对您的编程来说是个问题,您最好将命令参数写入文件并更新命令以读取该文件。许多程序,如 Windows 上的编译器和链接器,已经可以从文件中读取参数。一些 Unix 程序,如
xargs可以读取参数流并为每个n参数运行一个命令模板副本。 -
顺便说一句,
system()函数与系统调用(用户空间/内核空间边界)意义上的“系统调用”完全不同。