我有以下代码:
section .text
global _start ;must be declared for using gcc
_start: ;tell linker entry point
mov ecx, 2 ;read-write perms
mov ebx, name ;name of file
mov eax, 8 ;system call number (sys_creat)
int 0x80 ;call kernel
mov eax, 1 ;system call number (sys_exit)
int 0x80 ;call kernel
section .data
name db 'C:\\test.txt',0xa
这是为了在C盘中创建一个文件(test.txt)但不起作用,这是做什么的正确方法?
答案 0 :(得分:3)
首先,syscall = 8是sys_creat,而不是写。
但是找出正在发生的事情的最简单方法是查看程序的strace输出。在那里你可以看到系统调用是否成功,如果没有,那么错误值是多少。 (错误)
Afaik creat(2)不再使用,现在使用第二个参数中带有O_CREAT的Open(2)。