-1

嘿,我想使用系统调用打开和读取文件并逐字母打印其中的数据我在程序集文件中有函数 system_call,我想“保存”指向来自 system_call 的文件描述符的指针(SYS_OPEN 到使用它。目的不是使用#include目录

我的代码是

system_call(SYS_OPEN,argv[2],0,)

其中 argv[2] = "a.txt" SYS_OPEN = 5 和第 4 个参数应该是权限,我不知道该写什么

将其“保存”到指针后,我想像这样阅读和打印

while(system_call(SYS_READ,STDIN, input_char , 1)>0)
  {
  system_call(SYS_WRITE,STDOUT,input_char, 1);
  }

谢谢你。

4

3 回答 3

2

这是一个系统调用列表(可能是一个但已过时,但对你有用)http://asm.sourceforge.net/syscall.html。你可以在适当的 linux 内核源代码中检查 system_call 的实现细节和用法 sys_open , sys_read, sys_write 等。

于 2013-04-22T07:43:52.217 回答
1

open您可以使用库函数(即(2), (2))编写代码来执行此操作read,然后运行程序strace以查看它所做的函数调用和它使用的参数,然后在您自己的代码中复制它......

于 2013-04-22T07:41:58.460 回答
0

通过使用 int 作为指向文件的指针得到它:

char input_char[1];
int file = system_call(SYS_OPEN,argv[j],0,0777);

while(system_call(SYS_READ,file, input_char , 1) >0 )
  {
  system_call(SYS_WRITE,STDOUT,input_char, 1);
  }

感谢您的意见和帮助

于 2013-04-22T08:22:14.947 回答