c - 使用对 system() 的调用而不是您的编程语言的函数有缺点吗?

标签 c bash system-calls

我正在用 C 语言编程,为嵌入式设备创建一些 API。此嵌入式设备运行 Linux 的变体。我不是很熟悉 C - 我更熟悉 shell 脚本/bash。

考虑到这一点,当涉及到检查目录是否存在或获取磁盘使用情况等事情时,我发现调用 system 会更容易。或 popen并执行我的命令,然后解析输出。作为开发人员,这对我来说更快。

制作这些有缺点吗 systempopen调用而不是找出如何在 C 中完成这些事情,然后利用 C 的函数?

最佳答案

缺点:

  1. 如果有用户输入是不安全的
  2. 很难解析输出
  3. 它将依赖于一些外部的东西,比如 shell 脚本。
  4. 繁重的进程 - 系统 fork() 并并行启动其他程序

优点:

  1. 易于实现
  2. 依赖于程序输出解析可能非常容易。示例 system("ls -1");

总结-

这取决于您需要做什么,但一般情况下,消极因素多于积极因素。

关于c - 使用对 system() 的调用而不是您的编程语言的函数有缺点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31184444/

相关文章:

linux - 打开系统调用无法无故创建文件

java - 公共(public)执行 : Executing a program on the system PATH?

c - 如何在 C 预处理器中包含多个目录以搜索头文件

c - 在 C 中模拟 thiscall 以实现无需自引用的结构函数

c - 使用二叉搜索树进行井字棋(C)

arrays - bash 列出文件夹中的所有子目录,将它们写入数组以在菜单中使用

linux - 执行脚本时找不到邮件命令错误

python - 如何使用 ctypes 编写和包装 sqlite3 所需的 python 函数作为回调?

mysql - 将变量中带有特殊字符的大文本传递给 MYSQL 时出错

c++ - execl() 的参数传递到哪里?