and*_*and 14 c linux system-calls
对于我的OS类,我应该只使用系统调用来实现Linux的cat(没有printf)
阅读此参考,我发现它被用于打印到文件.我想我应该操纵游戏.
在示例中出现: ofstream outfile ("new.txt",ofstream::binary);
如何将其写入屏幕?
编辑:我意识到这个write()是iostream库的一部分,这是否与int write(int fd,char*buf,int size)系统调用相同?
jsc*_*ier 25
系统调用是Linux内核提供的服务.在C编程中,函数在libc中定义,它为许多系统调用提供了包装器.函数调用write()是这些系统调用之一.
传递给的第一个参数write()是要写入的文件描述符.的符号常量STDERR_FILENO,STDIN_FILENO和STDOUT_FILENO被分别定义为2,0,和1中unidtd.h.您想要写入STDOUT_FILENO或STDERR_FILENO.
const char msg[] = "Hello World!";
write(STDOUT_FILENO, msg, sizeof(msg)-1);Run Code Online (Sandbox Code Playgroud)
您也可以syscall()通过指定syscall.h或unistd.h中定义的函数号来使用该函数执行一个直接的系统调用.使用此方法,您可以保证只使用系统调用.您可能会发现Linux系统调用快速参考(PDF链接)很有帮助.
/* 4 is the system call number for write() */
const char msg[] = "Hello World!";
syscall(4, STDOUT_FILENO, msg, sizeof(msg)-1);Run Code Online (Sandbox Code Playgroud)