- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在使用 fcntl() 和 fileno 时遇到问题。我在实现锁定机制时遇到问题。但是,当我尝试关闭文件时,出现以下错误 fcntl: Bad file descriptor。我正在使用 fileno 获取文件描述,结果是 -1。
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <fcntl.h>
#include <unistd.h>
//args ==path to the file
int main(int argc, char *argv[])
{
struct flock lock = {F_WRLCK, SEEK_SET, 0, 0, 0 };
int fd;
FILE* fp;
lock.l_pid = getpid();
if (argc > 1)
lock.l_type = F_RDLCK;
printf("%s\n", argv[1]);
fp = fopen(argv[1], "w");
if(fp==NULL)
{
perror("fopen");
exit(1);
}
fd=fileno(fp);
getchar();
if (fcntl(fd, F_SETLKW, &lock) == -1) {
perror("fcntl");
exit(1);
}
lock.l_type = F_UNLCK;
if (fcntl(fd, F_SETLK, &lock) == -1) {
perror("fcntl");
exit(1);
}
close(fd);
return 0;
}
最佳答案
根据 fcntl(3)
:
EBADF:
fd
is not an open file descriptor, or the or the command wasF_SETLK
orF_SETLKW
and the file descriptor open mode doesn't match with the type of lock requested.
并且,您没有将 lock
的 l_type
成员设置为 F_WRLCK
,因为由上面的手册页强制执行。因此,只需在第一次调用 fcntl()
之前添加这一行,一切都会顺利进行。
lock.l_type = F_WRLCK;
关于c - 错误的文件描述符 fileno,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32664302/
我在使用 fcntl() 和 fileno 时遇到问题。我在实现锁定机制时遇到问题。但是,当我尝试关闭文件时,出现以下错误 fcntl: Bad file descriptor。我正在使用 filen
我正在尝试在我的 C 代码中使用 posix 函数 isatty() 来判断输出是否被重定向。但是,为此我需要一个文件描述符,而且根据我的研究,fileno() 似乎不再包含在 stdio.h 中。是
作为我正在编写的 python 项目的一部分,我有一个包装 stdout 流和文件的对象。然后,我的类上的 write() 方法会写入流和文件。然后,我将 sys.stdout 设置为我的对象,以便任
Python fileno()函数:得到文件编号 该函数用于得到文件在进程中的编号,这是一个整数值。其中,stdin 在进程中的文件编号永远是 0,stdout 永远是 1,stderr 永远是 2,
import pandas as pd import numpy as np import matplotlib.pyplot as plt from datetime import datetime
是否可以在不使用 fileno(FILE* file) 的情况下从文件指针获取文件描述符? 特别是,是否可以仅使用 C 标准库中的函数?(我的问题实际上是因为 fileno() 是一个 POSIX 标
我正在用 funopen 打开一个流 FILE *fin = funopen(cookie, readfn, NULL, NULL, closefn); if (fin == NULL) {
我在不同服务器上的许多项目中使用过 Photologue,以前从未遇到过此问题。 当Photologue调用此函数时 self.create_size(photosize) 我收到此错误 Unsupp
我非英语母语,因此有些惯用术语我不懂。 函数 fileno() 或 header errno.h 中的“no”真正含义是什么? “no”是“number”的缩写吗? 如果是,为什么? 最佳答案 在 m
我正在尝试将文件(音频文件)从 django webapp 上传到 django rest 服务。 形式: {% csrf_token %} V
我想将 grep 的输出缓冲到缓冲区,然后用 pandas 读取它,以避免将巨大的原始文件加载到内存中: import subprocess import io import pandas as pd
我在 Windows 8 上运行 Cygwin,试图为我想修改的游戏编译源代码。不幸的是,我在构建涉及 fileno 函数时遇到了一些错误。在谷歌搜索之后,问题似乎与 c++11 支持有关(我不太确定
我正在处理巨大的文件。 (>>>2GB)。我的问题是,如果文件大于 sizeof(int),在文件描述符上使用 fileno() 是否安全? 这里是一个简短的代码片段: #define _FILE_
我正在使用来自此链接的服务器和客户端程序:http://www.bogotobogo.com/python/python_network_programming_tcp_server_client_c
我正在使用一个使用 threads 的 Perl 脚本。和 threads::shared .我想从一个单独的线程打开的文件句柄中读取,但是 threads::shared不能承认它是共享标量的值。
有没有办法将 int 类型(文件描述符)的变量转换为 C 中的 FILE 类型?我有一个打开的管道 fd,我想使用需要 FILE 的函数。 最佳答案 你不能投它,但你可以调用fdopen(3) ,这正
我正在尝试编写一个与 Python 2 标准库的 socket.socket 具有相同接口(interface)的类。 当程序尝试调用 select.select() 时,我在尝试重现对象应具有的行为
免责声明:不要使用 ::feof() 作为循环条件。 例如,请参阅以下问题的答案:file reading: feof() for binary files 但是,我有“真实的”代码演示了一个问题,它
我刚刚使用 easy_install 安装了 Pyevolve,在尝试运行我的第一个程序时遇到错误。我首先尝试复制并粘贴 first example 的源代码但这是我尝试运行它时收到的信息: Trac
此代码在使用 Python 2.5.1 运行时生成“AttributeError: 'Popen' object has no attribute 'fileno'” 代码: def get_blam
我是一名优秀的程序员,十分优秀!