在C中使用来自系统调用的文件描述符

时间:2013-04-22 07:28:27

标签: c++ c linux assembly linux-kernel

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

我的代码是

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

其中argv [2] =“a.txt” SYS_OPEN = 5 第四个参数应该是许可,我不知道该写什么

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

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

答案 2 :(得分: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);
  }

感谢您的意见和帮助