繁体   English   中英

将文件描述符的整数值写入文件

[英]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要求像opencreat ,而文件指针是上述那种水平,假设你在,即使描述的环境是。

在这些环境中,您通常可以使用以下内容获取基础描述符:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM