返回介绍

操作系统热线电话

发布于 2024-10-10 23:21:32 字数 1760 浏览 0 评论 0 收藏 0

C 程序无论做什么事都要靠操作系统。如果它想与硬件打交道,就要进行系统调用。系统调用是操作系统内核中的函数,C 标准库中大部分代码都依赖于它们。每当调用

printf() 在命令行显示字符串时,C 程序都会在幕后向操作系统发出系统调用,把字符串发送到屏幕。

下面来看一个系统调用的例子,我们将从一个名副其实的系统调用——system() 开始。

system() 接收一个字符串参数,并把它当成命令执行:

system() 函数是在代码中运行其他程序的捷径,特别是在建立快速原型时,与其写很多 C 代码,不如调用外部程序。

代码冰箱贴

下面这个程序将一段带有时间戳的文本写到日志文件的底部。整个程序都可以用 C 语言来写,但程序员用了 system() 调用,因为它可以更快速地处理文件。

你能补全代码吗?代码创建了一条命令字符串,它先显示注释文本,接着是时间戳。

代码冰箱贴解答

下面这个程序将一段带有时间戳的文本写到日志文件的底部。整个程序都可以用 C 语言来写,但程序员用了 system() 调用,因为它可以更快速地处理文件。

你将补全代码。代码创建了一条命令字符串,它先显示注释文本,接着是时间戳。

试驾

编译程序,看看它是如何工作的:

当你查看程序所在目录时,程序创建了一个叫 reports.log 的新文件。

程序工作了。它从命令行读取注释,然后调用 echo 命令把注释追加到文件底部。

整个程序都可以用 C 语言来写,但你用 system() 简化了程序,可谓事半功倍。这里没有蠢问题问:system() 函数会编译到我的程序中吗?答:不会,和所有系统调用一样,system() 函数不在你的程序里,而在操作系统中。问:所以我在进行系统调用时会调用外部代码,像库一样,是吗?答:差不多,但具体细节要看操作系统。在一些操作系统中,系统调用的代码位于操作系统内核。而对其他操作系统而言,系统调用可能保存在动态库中。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文