- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
mode_t mode = S_IRWXU | S_IRWXG | S_IRWXO;
shm_fd = shm_open("/ipc_shm", O_CREAT | O_RDWR, mode);
这有效,shm_fd 返回 4。同样的进程然后调用一个库函数,该库函数也调用
fd = shm_open("/ipc_shm", O_RDWR, 0);
这个失败,errno 设置为 2,即 ENOENT(没有这样的文件或目录)。中间没有调用 shm_unlink 。知道为什么第二次通话失败。感谢您的帮助。
最佳答案
我的测试.c:
#include <sys/mman.h>
#include <sys/stat.h> /* For mode constants */
#include <fcntl.h> /* For O_* constants */
int main (int argc, char *argv[])
{
mode_t mode = S_IRWXU | S_IRWXG | S_IRWXO;
int shm_fd = shm_open("/ipc_shm", O_CREAT | O_RDWR, mode);
int fd = shm_open("/ipc_shm", O_RDWR, 0);
return 0;
}
使用 gcc test.c -Wall -lrt
编译后按预期工作:
$strace ./a.out
....
statfs("/dev/shm/", {f_type=0x1021994, f_bsize=4096, f_blocks=22290, f_bfree=22290, f_bavail=22290, f_files=55725, f_ffree=55723, f_fsid={0, 0}, f_namelen=255, f_frsize=4096}) = 0
futex(0xb6f5d1c0, FUTEX_WAKE_PRIVATE, 2147483647) = 0
open("/dev/shm/ipc_shm", O_RDWR|O_CREAT|O_NOFOLLOW|O_CLOEXEC, 0777) = 3
fcntl64(3, F_GETFD) = 0x1 (flags FD_CLOEXEC)
open("/dev/shm/ipc_shm", O_RDWR|O_NOFOLLOW|O_CLOEXEC) = 4
exit_group(0)
请在您的应用程序上运行 strace,并搜索所有出现的 ipc,也许还有 chroot()。也许某些东西取消了文件链接?
关于linux - 第二个 shm_open() 因 ENOENT 而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36938358/
我是 Ubuntu 17.04 的新手。所以我在使用 git 和 Heroku 时遇到了一些麻烦。 当我运行 $ heroku create 或尝试克隆在 Windows heroku git:clo
我在家使用 Windows 10 计算机进行开发,在工作中使用 Windows 10 计算机进行开发,并使用 Ubuntu 1604 服务器进行生产...... 当我运行“docker-compose
嘿,我一直在尝试安装“ws”模块,但是当我运行 npm install ws 时它给出以下错误, npm WARN enoent ENOENT: no such file or directory,
在 firebase function getting started guide 之后并在尝试部署时遇到一个看似简单的错误: firebase deploy --only functions i
在这个问题上有点卡住了。通过 Udemy.com 参加有关 Docker 的 Grider 类(class)。 当我这样做时,我总是收到以下错误: docker run -p 3000:3000 -v
我只想将 socket.io 安装到我位于 3.chat 文件夹中的项目中。但是当我运行以下命令时,它会显示以下警告。并且它没有在我的项目文件夹中创建 node_modules 目录。如何解决这个问题
我的整个 nodejs 代码位于 abc 文件夹中 root@ip-10-0-0-9:~/standalone/apiserver# ls Dockerfile abc root@ip-10-0-0
我有一个创建-反应-应用程序,我正在翻译文件从JSX到打字。例如,有一个文件名为/code/app_react/src/Common/Action.jsx,我将其重命名为/code/app_act/s
我从 docker 文件构建了一个图像来运行 node 并复制到一个完美运行的简单 node express 应用程序中。图像构建我可以运行容器和 bash 并复制本地文件。当我在 docker-co
问题是当我在 Android Studio 中运行我的程序时,FileInputStream 找不到 c:\poi-test.xls 文件。 我在 Android Studio 中运行的简单测试 ja
supervisord 配置如下, myserver 是 golang 可执行文件放入目录 /usr/tci/bin .它确实存在于目录中,为什么我仍然得到 ENOENT 错误? ENOENT 表示找
我正在使用 npm 3.3.6当我尝试安装一堆模块时,出现以下错误: npm i babel-cli babel-plugin-syntax-async-functions babel-plugin-
当我运行命令部署时,我收到以下错误: npm ERR! path C:\Users\hp\nodes\%RESOURCE_DIR%\package.json npm ERR! code ENOENT
当调用 access(2) 并得到 errno == ENOENT 时,手册页说: ENOENT A directory component in pathname would have bee
我正尝试从我的 DCIM 文件夹加载一个 .png 文件,但它抛出异常 06-25 14:03:09.350: E/BitmapFactory(12552): Unable to decode str
我正在运行以下程序,它使用 stat() 检查文件是否存在。但是,当我传递一个路径时,比如 $HOME/file.sh,它失败并出现 ENOENT 错误。但是当我通过扩展路径即 /root/file.
我正在使用 file system with nodejs在 windows 中写入进程日志。我有以下代码 var fs = require('fs'); var config = JSON.pars
我在使用 rubyXL 构建的爬虫时遇到了问题。它正确地遍历了我的文件系统,但我收到了 (Errno::ENOENT) 错误。我已经检查了所有 rubyXL 代码,一切似乎都已检查。我的代码附
当我尝试在VS Code上使用https://github.com/DonJayamanne/gitHistoryVSCode查看git历史记录时,出现错误Error: spawn git ENOEN
当我运行 grunt-open 时,我不断收到“警告:Spawn ENOENT”问题。 我的设置 我的所有项目文件都在 Google 云端硬盘上。我正在直接对文件进行开发(使用 Google 云端硬盘
我是一名优秀的程序员,十分优秀!