我有一个FILE *
,是通过致电返回的fopen()
。我需要从中获取文件描述符,以便对其进行调用fsync(fd)
。从文件指针获取文件描述符的功能是什么?
文件描述符 Linux很重要的设计思想就是一切皆文件,网络是文件,键盘等外设也是文件,很神奇吧?于是所有资源都有了统一的接口,开发者可以像写文件那样通过网络传输数据,我们也可以通过/proc/的文件看到进程的资源使用情况。 内核给每个访问的文件分配了文件描述符(File Descriptor),它本质是一个非负整数,在打开或新建文件时返回,以后读写文件都要通过这个文件描述符了。 应用 我们想想操作
文件描述符接口 函数 int fd_new (void) 分配文件描述符 struct dfs_fd * fd_get (int fd) 获取文件描述结构 void fd_put (struct dfs_fd *fd) 放置文件描述符 int fd_is_open (const char *pathname) 判断文件是否已被打开 int select (
问题内容: 在WeasyPrint的公共API中,我接受HTML输入的文件名(除其他类型外)。任何与内置文件一起使用的文件名都可以使用,但是我需要将其转换为方案中的URL,然后再将其传递给。 (所有内容在内部都是URL形式。我需要为文档提供一个“基本URL”,以便使用来解析相对URL引用。) urllib.pathname2url是一个开始: 将路径名路径从路径的本地语法转换为URL的路径组件中使
问题内容: 有没有办法在原始文件描述符而不是FILE *上执行ftell()的操作(返回文件中的当前位置)?我认为应该有,因为您可以使用lseek()查找原始文件描述符。 我知道我可以使用fdopen()创建与文件描述符相对应的FILE *,但我宁愿不这样做。 问题答案: 只需使用:
问题内容: 我想将PDF文件转换为CSV文件。我为此使用iText库。程序运行正常,但输出格式不正确。所有数据都在csv文件的第一行中。输出应与pdf文件完全相同(表示带有换行符)。请帮忙。提前致谢。 问题答案: 您需要在每个表行之后在缓冲区中引入一个换行符’\ n’。
当使用了大量虚拟主机,而且每个主机又使用了不同的日志文件时,Apache可能会遭遇文件描述符(有时也称为文件句柄)耗尽的困境。Apache使用的文件描述符总数如下:每个不同的错误日志文件一个、每个其他日志文件指令一个、再加10-20个作为内部使用。Unix操作系统限制了每个进程可以使用的文件描述符数量。典型上限是64个,但可以进行扩充,直至到达一个很大的硬件限制为止(hard-limit)。 尽管