[英]write the integer value of a file descriptor to a file
只测试文件描述符。 我的目标是用fopen打开一个文件流,并使用fprintf将文件描述符整数值写回文件,看看我得到了什么结果。
(我决定使用fopen,fprintf等)因为它允许我写变量,write()不允许它,
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
int main ()
{
FILE *fp;
fp = fopen("wow.txt", "w+");
if (fp < 0)
{
printf("ERROR \n");
}
else
{
printf("we good \n");
}
fprintf(fp, "hi %p \n", fp);
}
我面临的问题是,如果我为fprintf语句写了%d ...我得到编译器错误。 如果我写%p,我得到RAM中的地址。
是否有可能获得绝对整数值...如“3”
FILE *fp;
它不是文件描述符,它是文件流指针 ,因此,您需要将其视为指针。
文件描述符是一个小整数从一个返回的UNIXy要求像open
或creat
,而文件指针是上述那种水平,假设你在,即使有描述的环境是。
在这些环境中,您通常可以使用以下内容获取基础描述符:
int fd = fileno (fp);
以下完整程序(在CygWin下)显示了这一点:
#include <stdio.h>
int main (void) {
FILE *fp = fopen ("wow.txt", "w+");
if (fp < 0) {
printf ("ERROR\n");
return 1;
}
fprintf (fp, "fp=%p, fd=%d\n", fp, fileno (fp));
fclose (fp);
return 0;
}
用以下内容编译:
gcc -o testprog testprog.c
给出输出:
fp=0x800102a8, fd=3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.