操作系统热线电话
C 程序无论做什么事都要靠操作系统。如果它想与硬件打交道,就要进行系统调用。系统调用是操作系统内核中的函数,C 标准库中大部分代码都依赖于它们。每当调用
printf() 在命令行显示字符串时,C 程序都会在幕后向操作系统发出系统调用,把字符串发送到屏幕。
下面来看一个系统调用的例子,我们将从一个名副其实的系统调用——system() 开始。
system() 接收一个字符串参数,并把它当成命令执行:
system() 函数是在代码中运行其他程序的捷径,特别是在建立快速原型时,与其写很多 C 代码,不如调用外部程序。
代码冰箱贴
下面这个程序将一段带有时间戳的文本写到日志文件的底部。整个程序都可以用 C 语言来写,但程序员用了 system() 调用,因为它可以更快速地处理文件。
你能补全代码吗?代码创建了一条命令字符串,它先显示注释文本,接着是时间戳。
代码冰箱贴解答
下面这个程序将一段带有时间戳的文本写到日志文件的底部。整个程序都可以用 C 语言来写,但程序员用了 system() 调用,因为它可以更快速地处理文件。
你将补全代码。代码创建了一条命令字符串,它先显示注释文本,接着是时间戳。
试驾
编译程序,看看它是如何工作的:
当你查看程序所在目录时,程序创建了一个叫 reports.log 的新文件。
程序工作了。它从命令行读取注释,然后调用 echo 命令把注释追加到文件底部。
整个程序都可以用 C 语言来写,但你用 system() 简化了程序,可谓事半功倍。这里没有蠢问题问:system() 函数会编译到我的程序中吗?答:不会,和所有系统调用一样,system() 函数不在你的程序里,而在操作系统中。问:所以我在进行系统调用时会调用外部代码,像库一样,是吗?答:差不多,但具体细节要看操作系统。在一些操作系统中,系统调用的代码位于操作系统内核。而对其他操作系统而言,系统调用可能保存在动态库中。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论