问题标签 [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 投票
0 回答
349 浏览

python - Linux 和 OS X 上的 fcntl F_SETOWN

在 Linux (Ubuntu 14.04) 上,使用默认的 python (2.7.6),以下工作可以正确地将 stdin 的所有者设置为当前进程,以便我们接收 SIGIO 中断:

但是在 OS X (10.9.2) 上,默认 python (2.7.5) 中的同一行返回:

fcntl 或 Linux 等效的 OS X 手册页或 python 文档都没有提供任何帮助。

发生了什么?

0 投票
1 回答
688 浏览

ios - 获取创建套接字的进程的 pid

如何获取建立套接字的进程的 pid。我浏览了这个PDF 链接,他提到用 F_SETOWN 调用 fcntl() 和我们进程的 pid 来告诉进程它是套接字的所有者。如何使用 fcntl() 获取套接字所有者?

0 投票
1 回答
276 浏览

sockets - 非阻塞和异步套接字有什么区别

我们使用以下调用设置的非阻塞和异步套接字模式有什么区别。

  1. 案例一:int sockfd;// create_sock(sockfd);

    // init_sock(sockfd);

    fcntl(sockfd, F_SETFL, O_NONBLOCK);

  2. 案例二:

    int sockfd; // create_sock(sockfd);

    // init_sock(sockfd);

    整数 = 1;

    ioctl(sockfd, FIOASYNC, &on);

  3. 案例3:

    int sockfd;

    // create_sock(sockfd);

    // init_sock(sockfd);

    整数 = 1; ioctl(sockfd, FIONBIO, &on)

在上述所有情况下,套接字的行为是什么。

谢谢,

0 投票
2 回答
3137 浏览

java - Java FileLock 是 POSIX 咨询 (fcntl) 锁吗

我有一个 C++ 程序,它使用 POSIX 咨询锁来锁定文件。也就是说,它使用POSIXfcntl系统调用进行锁定操作。我想要一个 Java 程序与那个 C++ 程序互操作,所以我希望我的 Java 程序也使用 POSIX 咨询锁。Java 中的文件锁定应该使用标准FileLock类。但是 API 文档对于锁定的实现方式含糊不清,这是可以理解的:

此文件锁定 API 旨在直接映射到底层操作系统的本机锁定设施。因此,文件上的锁应该对所有有权访问该文件的程序可见,而不管这些程序是用什么语言编写的。

如果我在 POSIX 操作系统,或更具体地说是 GNU/Linux 系统上运行 Java(Oracles,Open JDK)的通用实现,假设 JavaFileLock类使用 POSIX 咨询锁是否安全?

0 投票
0 回答
871 浏览

c - 使用 fcntl 实现 dup 和 dup2

我正在实施dupdup2使用fcntl,我已经编码:

但是我看到 dup2 根本没有效率(太多的系统调用 ==> 太多的内核模式切换)并且 dup2 不是线程安全的,我可能会发生竞争条件,因为如果在close(newfd)fcntl之间(oldfd, F_DUPFD, newfd)另一个线程控制并打开一个文件,文件描述符newfd可能会被占用。

那么如何让 dup2 更加高效和线程安全呢?

0 投票
0 回答
283 浏览

c - 使用 fcntl() 和 fwrite() 远程写入文件

我在尝试写入服务器上的文件时遇到了一些问题。不同的客户端可以执行读/写请求。我正在使用 fcntl() 在发出写入请求时锁定文件。但是,当一个进程(客户端)获得锁并且另一个进程试图获得锁时,文件的内容将被删除。知道为什么会这样吗?下面是我正在谈论的代码:

0 投票
1 回答
3934 浏览

c - 使用 c 和 fcntl 在 unix 系统中锁定文件

我正在尝试在 unix 中学习编程 c。所以我通读了Beejs Guide并尝试了解有关文件锁定的更多信息。

所以我只是从他那里拿了一些代码示例,并试图读出文件是否被锁定,但每次我这样做时,我都会得到errno 22它代表无效参数。所以我检查了我的代码是否有无效参数,但我找不到它们。有人可以帮助我吗?

我的错误发生在:

完整代码:

我刚刚添加fl2了底部的部分。

0 投票
3 回答
5402 浏览

c - 什么时候需要 F_GETFL fcntl 命令的参数?

它是否可移植:(flags = fcntl(fd, F_GETFL);注意:否arg)?

Linux和FreeBSD手册页都说它arg被忽略了:

void在 Linux 文档中意味着这arg不是必需的。

这是来自 POSIX 的相关标志的用法示例F_GETFD

它表明(今天)arg不需要。F_GETFD然后它说:

F_GETFD、F_SETFD、F_GETFL 和 F_SETFL 的 arg 值都表示允许未来增长的标志值。

这是否意味着将来F_GETFL可能会使用?arg

在 Ohloh 代码上快速搜索“F_GETFL”会产生大多数开源项目确实通过arg的印象(通常0,有时NULL,甚至(损坏?)&fl)。我不明白为什么fcntl(fd, F_GETFL, 0)是首选形式。@Wumpus Q. Wumbley 认为这可能是由也使用表单的“UNIX 环境中的高级编程”一书引起的。fcntl(fd, F_GETFL, 0)

是否有需要第三个参数的系统/编译器:flags = fcntl(fd, F_GETFL, 0);?今天或将来是否可以fcntl(fd, F_GETFL)产生fcntl(fd, F_GETFL, 0)不同的结果(假设一个合规的实施)?

0 投票
2 回答
7352 浏览

c - F_SETPIPE_SZ 未声明

我包括以下标题:

我也尝试过使用

之前#include <unistd.h>,但它也无济于事。

我尝试使用fcntl并将其F_SETPIPE_SZ作为第二个参数传递,但我不断收到此错误消息:

错误:“F_SETPIPE_SZ”未声明(在此函数中首次使用)

我实际上发现我不需要这个,但我只是好奇为什么我不能使用它。

谢谢你。

所以这里是解决方案,感谢 Chrono Kitsune:Put

在任何包含之前。

0 投票
1 回答
918 浏览

linux - 文件写锁和子进程

如果一个进程给一个文件一个写锁,然后它产生一个子进程,锁是由子进程继承的吗?如果是,那么有2个进程有写锁,我了解到只有1个进程可以有写锁,有些道理?这是一个测试python代码

当父母存在时,我试图获取文件 test.ini 的锁,但失败了 ,所以我猜孩子有锁