我正在从“从头编程”一书中学习x86程序集Linux,目前我正在学习如何打开文件并从中读取或写入文件。
我在打开文件的选项上有问题。我知道0是只读的,03101是写和截断的,但是我在哪里可以获得所有打开选项的完整文档呢?
发布于 2022-03-21 18:31:27
这不是关于WSL,而是关于您选择在WSL中安装什么Linux发行版。不同的发行版将在文件系统中的不同位置放置东西。
locate '*fcntl*.h'是查找适当头部的好方法。
您可以始终编译一个C程序,其中包含文档中的标题(这将引入“真实”头部),并查看其gcc -E -dM宏定义。甚至
gcc -E -dM /usr/include/fcntl.h | grep ' O_'只筛选O_宏常量。(我认为fcntl.h可能在普通的/usr/include中,而不是隐藏在某个地方,但也许那只是我的Arch /Linux发行版,保持了它的简单性。它在/usr/include/asm/中保持Linux特有的libc报头,比如/usr/include/asm/中的unistd_32.h和unistd_64.h,分别可以找到32位和64位的呼叫号。)或者让通常的包含路径搜索发生:
echo '#include <fcntl.h>' | gcc -E -dM - | grep ' O_'或者编写执行printf("%x, %x\n", O_CREAT, O_TRUNC)或其他操作的代码,打印出您感兴趣的常量,不管它们来自哪个头。(或打印出它们的位或,如O_CREAT|O_TRUNC)。
像S_IRUSR这样的权限模式位常量是用其他常量(如__S_IREAD )来定义的,因此它有点像老鼠巢;可能只是打印出来是个好主意。或者简单地用八进制写许可位,比如mov edx, 0o666或mov $0666, %edx (GAS)。(让umask清除文件创建的写入-换其他位)。
要查找的常量的名称可以在手册页open(2)中找到。
发布于 2022-03-21 15:19:17
使用:,我在/usr/ x86 / asm -泛型/fcntl.h中找到了正确的文件
https://stackoverflow.com/questions/71558966
复制相似问题