【发布时间】:2016-02-09 11:28:18
【问题描述】:
我目前正在编写一个 C 程序,其中一个限制是我无法使用 system 调用外部程序。相反,我需要使用 C/C++ 库中的系统调用在该语言的习语范围内工作。我在理解“系统”调用和“C/C++ 系统”调用之间的区别时遇到了一些麻烦。
system 是否只是依赖于平台,而“C 系统”调用构建在 system 之上并根据所使用的平台自动更改其执行?
希望我的问题很清楚。提前致谢!
【问题讨论】:
-
你能举一个你想调用的外部程序的例子吗?
-
您的意思是
fread和fopen还是open和read? -
是的,
system只需生成一个 shell 命令来启动您要求的任何二进制文件(或 shell 内置)。系统调用是对内核“功能”的调用,内核是唯一能够执行的功能(即“真正”访问硬件)。当然,system生成的程序可以/将使用系统调用。我想这里的目标是强迫你做这一切,而不是依赖现有的二进制文件来为你做这件事。 -
@cad
open是我想到的,但它更像是一个普遍的问题。 -
可能相关,但不完全相同的问题:stackoverflow.com/questions/28137628/alternative-to-system/…