gpt4 book ai didi

c - 在C程序中使用cp命令获取要复制的文件列表

转载 作者:行者123 更新时间:2023-11-30 21:06:13 25 4
gpt4 key购买 nike

我有一个 bash 命令

"cp -rf "TEMP_DIRECTORY"/* "USER_DIR"/";

我在 C 程序中使用它。

TEMP_DIRECTORYUSER_DIR 使用 #define 定义。

我想获取TEMP_DIRECTORY内的文件列表。我可以用上面的方法做到这一点吗?

最佳答案

如果我们将提供的代码行视为您打算用来执行所需任务的实际代码片段,那么您的查询的答案是

假设:

#define TEMP_DIRECTORY "/tmp"
#define USER_DIR "/home/joe"

那么提供的语句只是一个表示字符串常量的表达式,它本身不执行任何操作。具有足够警告的 GCC 会告诉您:

.code.tio.c: In function ‘main’:
.code.tio.c:5:1: warning: statement with no effect [-Wunused-value]
"cp -rf "TEMP_DIRECTORY"/* "USER_DIR"/";
^~~~~~~~~

要使命令在 C 代码中生效,您需要将字符串传递给函数,例如 system()popen() .

const char *cmd = "cp -rf "TEMP_DIRECTORY"/* "USER_DIR"/";
system(cmd);

但是,自从 system()popen()使用shell执行命令,容易受到命令注入(inject)攻击。如果您TEMP_DIRECTORYUSER_DIR实际上包含您想要扩展的 shell 环境变量,最好您自己使用 getenv() 扩展它们。 ,形成完整路径,然后通过 fork() 调用命令随后是 exec() 之一变体。如果您需要 glob 扩展,可以使用 POSIX 实用程序 glob() ,或者您可以使用 <dirent.h> 中的函数自行遍历目录.

关于c - 在C程序中使用cp命令获取要复制的文件列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50144558/

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