场景:
我在运行有C ++应用程序的嵌入式linux 发行版上运行。我只需要压缩目录并将压缩后的输出放置在某个位置即可。而已。
我知道我们可以在命令行界面上使用以下命令tar压缩目录。
tar cvzf directory.tar.gz /path/to/directory
我看到我可以选择在C ++中运行系统命令。以下是一个示例。
void CompressDirectory() {
std::system("tar cvzf directory.tar.gz /path/to/directory");
}
环境:
嵌入式Linux
答案 0 :(得分:1)
system()
通常不被接受,因为与之相关的潜在安全风险。在您明确说明所有内容的特定情况下,您会没事的。
您可以在程序中对其进行编码,以便以编程方式进行处理和处理,而不必将其脱壳,这是正确的方法。
只要您的tarball名称和目录都经过硬编码,我就不会想到任何安全问题,但是我要小心,以确保您不会覆盖任何东西或类似内容。
如果您自己以外的其他人甚至都可以触摸服务器,请不要使用system()
。
答案 1 :(得分:1)
#standardSQL
WITH q1 AS (
SELECT STRUCT([1, 2], [3, 4], [5, 6]) AS line
)
SELECT
ARRAY(SELECT CAST(item AS INT64) FROM UNNEST(new_line) item) AS count_to_six
FROM (
SELECT
(SELECT ARRAY_CONCAT_AGG(SPLIT(arr))
FROM UNNEST(REGEXP_EXTRACT_ALL(TO_JSON_STRING(q1), r'\[(.+?)]')) arr
) new_line
FROM q1
)
在命令行中不可用(例如,在Windows上)。