gpt4 book ai didi

c - linux系统c引用

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:25:56 25 4
gpt4 key购买 nike

在以 Linux 作为操作系统的嵌入式系统上,我想调用第 3 方二进制文件以从数据库中检索数据并将此数据附加到现有文件中。传递给 system() 函数的命令字符串如下所示:

"export_from_db >> /tmp/myFile"

不幸的是,这不起作用。 /tmp/myFile 永远不会被创建!如果我省略重定向,那么数据库导出将打印到标准输出。

我想知道 system() 和通过“>>”的重定向是否配合得很好?在提示符下,我成功测试了这个命令 "export_fom_db >>/tmp/myFile"!有人知道如何使用 system() 实现它吗?是否需要某种引用?

最佳答案

嗯..实际上,对我来说似乎没问题..这正是 system() 的用途 - 在当前 shell 下执行一行。那个嵌入式 linux 的 shell 支持 >> 运算符吗?您是否在终端中手动尝试过?

另一个想法是您的应用程序可能在其他一些用户帐户下运行,并且该帐户可能有一些奇怪的配置,例如使用一些 csh 或 ksh 而不是 bash(或反之亦然,取决于您喜欢)。检查哪个用户实际拥有该进程并检查/etc/passwd 以了解 shell 设置。

此外,应用程序运行的用户帐户很可能根本没有写入/tmp 的权限 :) 一定要检查一下

另外...在您的“嵌入式 Linux”上,很可能只是以一种简单的方式实现了 system(),它只调用具有给定参数的应用程序并跳过所有其他 shell-wise 运算符。这样做可能是为了节省资源,因为 system() 可能很少被使用,或者只是被你的 linux 设计者认为“太重”了……这取决于发行版……如果你告诉我们是哪一个是的话,知识多一点的人应该能说出来吧。

关于c - linux系统c引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12699350/

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