问题标签 [fdopen]
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.
android - Android棒棒糖从本机代码c ++写入sdcard
我有使用大量 c++ 本机代码的 android 应用程序。应用程序需要处理位于 sdcard 上的文件(读取、创建、附加)。但是 Kitkat+ 拒绝为 3rd 方应用程序写入 sdcard。Android 5 引入了新的 API,再次允许这样做。
如何使用为 Android 5.0 (Lollipop) 提供的新 SD 卡访问 API?
我发现的所有示例和文档主要用于 Java 方面。本机代码的示例不存在或非常不清楚。所以我想问几个问题。
上面的链接包含有价值的示例如何获取可以返回 ParcelFileDescriptor 的 DocumentFile。从这个对象我能够接收本机文件描述符 - ParcelFileDescriptor.getFd()。这是我通过 jni 发送到 c++ 代码的整数。
在 c++ 中,我使用 fdopen(fd) 打开文件。
我的问题是:
- fdopen 函数是如何使用新 api 打开文件的正确方法吗?或者 DocumentFile 已经打开了文件,我应该只在进一步的操作中使用 fd 。
- 使用 fclose 关闭本机代码中的文件描述符就足够了吗?或者我应该使用 ParcelFileDescriptor.detachFd() 在 java 端关闭它。或两者。
谢谢
编辑:我 getFD 和 detachFD 工作。但我从来没有找到答案如何正确替换 ftruncate,它也需要写访问权限,而且我没有找到像输入一样接受文件描述符的 ftruncate 版本
c++ - QFile/FILE* : 如何正确关闭句柄?
我需要在不拉扯头发的情况下使用多语言QFile
打开文件。QString
但我还需要通过std::stream
API 管理这些文件的数据。正如许多人建议的那样,我曾经std::fstream stdFile(fdopen(qtFile.handle(), mode));
这样做过。
但是,我在重复操作时遇到了问题。经过特定数量的文件处理后,应用程序崩溃。
以下代码可以重现崩溃:
509th 将在seekg
. 如果我要操作数百个不同的文件,也会发生这种情况。第 509 次我尝试读取文件时,它仍然会崩溃,任何文件。
知道我做错了什么吗?
c - 如何忽略 CHILD 进程中的空管道?
我正在使用一个read_from_pipe
在我的child
过程中命名的子例程,如下所示来读取管道中的任何内容并显示它:
fileDesc_Is_Valid
是另一个检查文件描述符是否存在的子程序。
问题是,因为我waitpid(pid, &status, 0);
在我的语句中使用parent
了等待完成其任务的语句,所以当管道实际上为空时child
,编译器会卡在循环的第一次冷运行中。我while
怎样才能让编译器简单地忽略空管道?AND
while
c - 相同位置的重复文件指针
大家好,我有这个代码:
它适用于这样的文件:
主文件指针 ( FILE *fp
) 在main()
.
如果我找到标签,我的想法是复制文件指针fp
(在原型中传递),<item ...>
因为如果这个标签链接到我想要删除的服务的名称,我必须替换整个<item ...>
字符串.
但是,我有一个问题......当我执行snprintf()
andfputs()
时,文件在文件的开头被覆盖,因为,恕我直言,我认为文件指针不是重复的。
有办法或解决方法来修复/解决这个问题吗?
先感谢您!
c - 同时使用文件描述符及其关联的 FILE* 流是否安全?
我正在编写一个 C++ 套接字库来处理管理与套接字相关的系统调用的复杂性。我很好奇在创建FILE*
withfdopen(3)
并将其与客户端的原始文件描述符一起使用时是否有任何有害的副作用。
我希望能够做到这一点,因为它提供了更大的灵活性,可以在使用的select(2)
同时使用getline(3)
(这个问题的主要目标)等东西,但是我担心这FILE*
会导致基于文件描述符的实用程序出现一些问题(即内部缓冲一个FILE*
混乱select(2)
的能力来确定是否有可用的数据read(2)
)。
python-3.x - 在 C 中分叉,然后使用管道将数据传递给 Python3 程序
我在 c 中分叉,从子进程调用 python 程序并从父进程传递一个字符串。现在我将在我的 python 程序上打印这个字符串。我有这个代码:
如何从 python 程序中读取管道?我必须使用 os.fdopen。下面的代码不起作用。
c - C: 关闭 FILE* - 不是文件描述符
我想知道是否可以在FILE
不关闭底层文件描述符的情况下释放包装器:
c - python os.pipe() 在c中创建管道并打开文件描述符
我想用 python 创建一个管道readfd, writefd = os.pipe()
。然后我在我的python脚本中创建一个子进程来运行一些c代码,它试图打开readfd(这是一个int,比如5)FILE* fp = fdopen(readfd, "r");
,但它返回一个nullptr。为什么这是错误的?如何在我的 c 代码中打开文件描述符?
c - 使用 fdopen 时文件描述符错误?
我有以下 C 代码。子进程用于运行 test3,其代码如下。父级用于将数据传递给将被重定向到 test3 的 STDIN 的子级。
这是test3代码:
我的问题是fdopen
在父代码中返回 NULLBad file descriptor error
并且我无法找出原因。任何人都可以帮忙吗?
提前致谢。
c - 捕获正在写入打开文件描述符的数据
是否有可能编写一个能够获取另一个应用程序的打开文件描述符并仅传递其内容而不进行任何转换的程序?
假设 App A 有一个打开的 FD,指向它正在写入数据的磁盘上的某个文件。
我希望能够以某种方式访问打开的 FD,以便每当应用程序 A 将数据写入该文件时,我都可以将该写入广播到对该操作感兴趣的其他应用程序。
我希望能够在打开的 FD 上多路复用读/写操作。
一个更具体的例子;我有一个 midi 键盘和一些合成器,我希望能够打开 midi 键盘文件描述符并将所有传入的写入操作传递给 0-N 感兴趣的合成器。