我怎样才能使系统调用write()打印到屏幕上?

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

读这个参考我发现它被用来打印到一个文件。 我想我应该操纵stream。

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

我怎样才能让它写入屏幕?

编辑:我意识到这写()是iostream库的一部分,是这样的int写(int fd,char * buf,int size)系统调用?

写入标准输出或标准错误的文件描述符(分别为1和2)。

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

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

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

您也可以使用syscall()函数通过指定在syscall.hunistd.h中定义的函数编号来执行不加区分的系统调用。 使用这种方法,你可以保证你只使用系统调用。 您可能会发现Linux系统调用快速参考 (PDF链接)是有帮助的。

 /* 4 is the system call number for write() */ const char msg[] = "Hello World!"; syscall(4, STDOUT_FILENO, msg, sizeof(msg)-1); 
 #include <unistd.h> /* ... */ const char msg[] = "Hello world"; write( STDOUT_FILENO, msg, sizeof( msg ) - 1 ); 

第一个参数是STDOUT文件描述符(通常为1 ),第二个参数是要写入的缓冲区,第三个参数是缓冲区中文本的大小( -1表示不打印零终止符)。

你的参考是不正确的。 它是C ++的一部分,与你的任务无关。 正确的参考是http://www.opengroup.org/onlinepubs/9699919799/functions/write.html