execv 的缓冲区大小

Buffer Size for execv

我有一项大学作业,我需要从管道读取 bash 命令并执行此命令。我正在考虑使用 execv*,因为我可以通过使用 space 作为分隔符来创建缓冲区。问题是我不能使用 STL 库,而且我不知道应该如何创建这个缓冲区,因为这个缓冲区的大小是可变的。有什么建议么?提前致谢

如果像下面这样只执行一个管道命令,缓冲区大小 30 就足够了,甚至更多

ls -l | wc -l

但是你可以支持多个管道命令,你会得到如下命令,你的缓冲区大小必须足够

cat index.html  | grep ".com" | grep ".splunk." | cut -d "<" -f2  | cut    -d ">" -f1 | grep ":" | cut -d":" -f2  |  cut -d "/" -f3 | cut -d " " -f1 |  grep ".splunk." | cut -d '"' -f1  | sort | uniq 

您的缓冲区大小应为 100,我为像您这样的操作系统项目选择了大小 100,我们实现了一个终端,它几乎支持所有内容,多管道,重定向例如...

此外,我使用了如下的execvp,

 execvp(args[0], &args[0]);