gpt4 book ai didi

c - 在 c 中访问 bash 局部变量

转载 作者:太空宇宙 更新时间:2023-11-04 01:16:52 24 4
gpt4 key购买 nike

我正在尝试用 C 重新制作一个 ls 命令;如果列出了目录内容,我需要复制一个“总计”行(Unix ls 就是这样做的)。我知道它是文件大小的总和(不考虑软链接(soft link)和内部目录内容),四舍五入,除以局部变量 BLOCKSIZE,如果错误请纠正我。问题是:BLOCKSIZE 到底是什么,我如何从终端检查它以及如何在 c 中获取它的值。PS:我的 c 程序必须像 ./program [options] {files} 这样从 bash 运行,我不能将任何其他内容传递给 main 中的 argv。提前致谢!

最佳答案

来自 GNU coreutils :

The default block size is chosen by examining the following environment variables in turn; the first one that is set determines the block size.
....
BLOCKSIZE

BLOCKSIZE 是一个环境变量。您使用 C 标准获取环境变量的值 getenv()打电话。

 const char *blocksizestr = getenv("BLOCKSIZE");
if (blocksizestr == NULL) { /* no BLOCKSIZE variable */ }
int blocksize = atoi(blocksizestr);

另请注意,BLOCKSIZE 不会直接影响 lscoreutils/ls.c 中没有引用它. LS_BLOCK_SIZEBLOCK_SIZE 是。 BLOCKSIZE 环境变量在 gnulib/human.c 中使用human_options()human_readable() 函数中的库。 human_readable() 被 gnu 实用程序用来打印人类可读的输出。

关于c - 在 c 中访问 bash 局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56175109/

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