问题标签 [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.
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
c - fcntl F_GETLK 总是返回真
我正在尝试使用锁定文件制作单个实例守护程序,但fcntl()
似乎没有按预期工作......
所以如果它返回-1,我会调用get_lock_file_status
并退出,以确保没有其他实例正在运行,而不是我做一些事情(fork chdir 等),并creat_lock_file
在成功创建守护进程后调用 crate 并锁定 pid 文件......
当编译并运行程序按预期运行时,运行会创建锁定文件并将 pid 写入其中,但是当第二个实例启动时,第二个实例只是打开相同的锁定文件并将它自己的 pid 写入它!
我究竟做错了什么?第二个实例不应该返回 -1 inget_lock_file_status
吗?
c - 为什么 OSX 上的 fcntl(fd, F_SETLKW, ...) 中的进程会阻塞?
SQLite 的一个新实验特性在某一时刻使用了一个阻塞 posix 锁。我有一个测试用例,其中一个进程在 OSX 上的 fcntl() 调用中被阻止,但我不明白为什么。同样的测试也适用于 Linux,但这可能只是幸运的时机。
电话是:
其中“f”是:
根据 [lsof] 我的进程是唯一打开文件的进程:
但是,当第一次调用 fcntl() 时,可能有其他进程持有一个冲突的锁。
gdb 显示传递给 fcntl() 的文件描述符是“10”,所以我认为它是有效的。
所以我的问题是,如果没有其他进程打开文件,为什么 fcntl() 会阻塞?
c - 无法在 linux 中使用 fcntl 切换到阻塞模式
我有一个示例程序:
似乎在从文件描述符中删除非阻塞标志后,read
调用应该阻塞,直到将某些内容写入 FIFO,但我的程序总是在没有阻塞和rd=0
结果的情况下运行。你能解释一下这种行为吗?谢谢!
c - 使用 fcntl 预分配存储无法按预期工作
我想用系统调用预分配存储fcntl
。这是我这样做的代码:
该变量ret
不在-1
执行该代码之后。当我通过调用fstat
相同的文件句柄来获取文件大小时,我得到stat.st_size = 0
. 但该值store.fst_bytesalloc
等于 的值length
。
我需要做什么?当我打电话
我得到一个有洞的文件还是一个没有洞的“真实”文件?第二个是我的目标。
python - python fcntl没有获取锁
我已经编写了一个代码来在 python 的 csv 文件中并行编写。当我的程序结束时,我看到的是几行合并而不是单独的行。每行应该只包含 3 列。但相反,它显示如下
例如
通过阅读其他几个问题,我了解到,如果我想避免这种情况,我需要锁定我的文件。所以我添加了 fcntl 模块。但似乎我的文件仍未被锁定,因为它会产生类似的输出
我的代码
我必须将 getdata 声明为顶级函数,否则它给了我“Cant pickle function”
c - c - F_GETFL 和 F_SETFL 的使用
在尝试使用fcntl()
with command F_GETFL
andF_SETFL
时,我遇到了一些问题:
为什么返回的标志
fcntl(fd, F_GETFL)
只包含我打开文件时设置的位子集?它只显示可修改的吗?使用
fcntl(fd, F_SETFL, flag)
的时候,flag参数怎么传,是不是需要先读取flagfcntl(fd, F_GETFL)
,再修改传?还是在内部它只是&
对新参数进行一些操作?我在哪里可以找到 32 位(或更少)打开文件标志的完整列表?
代码 - [dup_fd_share.c]:
输出:
c - 关于在 C 中使用 fcntl 的“无效参数”
我一直试图了解原因,但找不到Invalid Argument
使用perror
. 任何人都可以提出这个错误的原因吗?
我试过检查论点。文件描述符看起来不错,flock 的参数是 double ,triple,quadruple ... 检查次数。我只是不明白问题出在哪里。
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 社区来寻求帮助,那么对于新手在未来检查和解决这些问题有什么建议呢?
谢谢。