问题标签 [fcntl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
314 浏览

python - 在 Python 中禁用 DSUSP

一个 OSX 用户提交了一个错误,该错误CTRL+Y导致 python 终端应用程序被挂起,通过dsusp导致当 Python 程序尝试在标准输入上读取时发送 SIGTSTP。下面的代码解决了这个问题:(上下文

  • 如何检测到此功能(dsusp)?有没有我可以基于os.uname()或类似使用的启发式方法?
  • termios.VDSUSP不存在,即使在拥有它的系统上也是如此。有没有它失踪的原因?
  • 这种关闭它的行为有多普遍?使用 readline 的程序似乎在 OSX 上忽略了CTRL+ Y,所以它至少相当普遍。我很久以前添加stty dsusp undef到我的 .bashrc 中,所以没有注意到它。

要查看此挂起行为,请在 OSX 或其他具有此功能的设备上运行cat并输入CTRL+ 。Y Return

0 投票
1 回答
2822 浏览

c - fcntl F_GETLK 总是返回真

我正在尝试使用锁定文件制作单个实例守护程序,但fcntl()似乎没有按预期工作......

所以如果它返回-1,我会调用get_lock_file_status并退出,以确保没有其他实例正在运行,而不是我做一些事情(fork chdir 等),并creat_lock_file在成功创建守护进程后调用 crate 并锁定 pid 文件......

当编译并运行程序按预期运行时,运行会创建锁定文件并将 pid 写入其中,但是当第二个实例启动时,第二个实例只是打开相同的锁定文件并将它自己的 pid 写入它!

我究竟做错了什么?第二个实例不应该返回 -1 inget_lock_file_status吗?

0 投票
0 回答
394 浏览

c - 为什么 OSX 上的 fcntl(fd, F_SETLKW, ...) 中的进程会阻塞?

SQLite 的一个新实验特性在某一时刻使用了一个阻塞 posix 锁。我有一个测试用例,其中一个进程在 OSX 上的 fcntl() 调用中被阻止,但我不明白为什么。同样的测试也适用于 Linux,但这可能只是幸运的时机。

电话是:

其中“f”是:

根据 [lsof] 我的进程是唯一打开文件的进程:

但是,当第一次调用 fcntl() 时,可能有其他进程持有一个冲突的锁。

gdb 显示传递给 fcntl() 的文件描述符是“10”,所以我认为它是有效的。

所以我的问题是,如果没有其他进程打开文件,为什么 fcntl() 会阻塞?

0 投票
3 回答
1476 浏览

c - 无法在 linux 中使用 fcntl 切换到阻塞模式

我有一个示例程序:

似乎在从文件描述符中删除非阻塞标志后,read调用应该阻塞,直到将某些内容写入 FIFO,但我的程序总是在没有阻塞和rd=0结果的情况下运行。你能解释一下这种行为吗?谢谢!

0 投票
1 回答
714 浏览

c - 使用 fcntl 预分配存储无法按预期工作

我想用系统调用预分配存储fcntl。这是我这样做的代码:

该变量ret不在-1执行该代码之后。当我通过调用fstat相同的文件句柄来获取文件大小时,我得到stat.st_size = 0. 但该值store.fst_bytesalloc等于 的值length
我需要做什么?当我打电话

我得到一个有洞的文件还是一个没有洞的“真实”文件?第二个是我的目标。

0 投票
1 回答
205 浏览

python - python fcntl没有获取锁

我已经编写了一个代码来在 python 的 csv 文件中并行编写。当我的程序结束时,我看到的是几行合并而不是单独的行。每行应该只包含 3 列。但相反,它显示如下

例如

通过阅读其他几个问题,我了解到,如果我想避免这种情况,我需要锁定我的文件。所以我添加了 fcntl 模块。但似乎我的文件仍未被锁定,因为它会产生类似的输出

我的代码

我必须将 getdata 声明为顶级函数,否则它给了我“Cant pickle function”

0 投票
2 回答
18029 浏览

c - c - F_GETFL 和 F_SETFL 的使用

在尝试使用fcntl()with command F_GETFLandF_SETFL时,我遇到了一些问题:

  1. 为什么返回的标志fcntl(fd, F_GETFL)只包含我打开文件时设置的位子集?它只显示可修改的吗?

  2. 使用fcntl(fd, F_SETFL, flag)的时候,flag参数怎么传,是不是需要先读取flag fcntl(fd, F_GETFL),再修改传?还是在内部它只是&对新参数进行一些操作?

  3. 我在哪里可以找到 32 位(或更少)打开文件标志的完整列表?

代码 - [dup_fd_share.c]:

输出:

0 投票
1 回答
4239 浏览

python - 如何在不安装新软件包的情况下在 Windows 上执行文件锁定

我已将代码添加到 Python 包 ( brian2) 中,该包在文件上放置了排他锁以防止出现竞争条件。但是,由于此代码包含对 的调用fcntl,因此它不适用于 Windows。有没有办法让我在不安装新软件包的情况下对 Windows 中的文件进行独占锁定,例如pywin32?(我不想向 . 添加依赖项brian2。)

0 投票
2 回答
1237 浏览

c - 关于在 C 中使用 fcntl 的“无效参数”

我一直试图了解原因,但找不到Invalid Argument使用perror. 任何人都可以提出这个错误的原因吗?

我试过检查论点。文件描述符看起来不错,flock 的参数是 double ,triple,quadruple ... 检查次数。我只是不明白问题出在哪里。

0 投票
1 回答
441 浏览

c - stat.h 文件访问文件描述符 open() 黑客利用的艺术

我正在编写 Jon Erickson 的“黑客:剥削的艺术”的第二版,使用 VM(virutalbox)运行它附带的 LiveCD(Ubuntu 7.04)。在第 0x281 节“文件访问”中,作者使用第 82-84 页上的示例解释了通过文件描述符以及 open() close() read() 和 write() 函数访问文件。

simplenote.c 的代码如下:

但是,当我在终端窗口中键入书中所述的以下说明时,它会返回以下错误消息:

这是 sys/stat.h 第 105 行:

这里是 bits/stat.h 第 63-83 行:

我想这可能对第一组问题有一些用处:

C++ 系统文件 bits/stat.h 突然中断,出现“错误:字段 'st_atim' 的类型不完整”

/usr/include/time.h

在我的终端窗口中没有做任何事情。

这是 simplenote.c 的主要功能第 1-6、34-35 行:

我猜开放函数问题源于 fcntl.h ?

由于作者提供的错误代码,我似乎一直遇到问题。我不想一直依赖 stackoverflow 社区来寻求帮助,那么对于新手在未来检查和解决这些问题有什么建议呢?

谢谢。