gpt4 book ai didi

c - 如何让系统调用 write() 打印到屏幕上?

转载 作者:IT王子 更新时间:2023-10-29 00:26:05 26 4
gpt4 key购买 nike

对于我的操作系统类,我应该只使用系统调用(没有 printf)来实现 Linux 的 cat

阅读 this reference我发现它被用来打印到一个文件。我想我应该操纵 ofstream。

例子中出现:ofstream outfile("new.txt",ofstream::binary);

如何让它写入屏幕?

编辑:我意识到这个 write() 是 iostream 库的一部分,这与 int write (int fd, char *buf , int size) 系统调用相同吗?

最佳答案

系统调用是Linux内核提供的一种服务。在 C 编程中,函数在 libc 中定义,它为许多系统调用提供了包装器。函数调用 write()是这些系统调用之一。

传递给 write() 的第一个参数是要写入的文件描述符。符号常量STDERR_FILENOSTDIN_FILENOSTDOUT_FILENO分别定义为20,以及 unidtd.h 中的 1 .您想要写入 STDOUT_FILENOSTDERR_FILENO

const char msg[] = "Hello World!";
write(STDOUT_FILENO, msg, sizeof(msg)-1);

您也可以使用 syscall()通过指定 syscall.hunistd.h 中定义的函数号来执行间接系统调用的函数。使用此方法,您可以保证只使用系统调用。你可能会发现 The Linux System Call Quick Refernence (PDF 链接)有帮助。

/* 4 is the system call number for write() */
const char msg[] = "Hello World!";
syscall(4, STDOUT_FILENO, msg, sizeof(msg)-1);

关于c - 如何让系统调用 write() 打印到屏幕上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3866217/

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