- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 shmget()
分配一个共享内存段,然后我将其与 pthread_mutex_init()
一起使用以创建进程间共享的互斥量。通常,这会按预期工作。然而,偶尔 shmget()
会返回 ENOENT
。阅读手册页,只有当 shmflg
不包含 IPC_CREAT
时才会出现这种情况,但我将其包括在内。这是我的代码的片段:
shmid_ = shmget( MYLOCK_KEY_ID, sizeof(pthread_mutex_t), IPC_CREAT | IPC_EXCL | 0666 );
if ( errno == ENOENT ) {
// This should never occur since IPC_CREAT was specified
std::cerr
<< "shmget() returned ENOENT (it thinks IPC_CREAT wasn't specified).\n"
<< "This seems to be a bug in shmget()?" << std::endl;
exit(1);
}
我完全不知道会发生什么。我已经在多个系统(Linux 内核 2.6.32 和 3.3.5)上尝试过,但都表现出相同的行为。目前,当我获得这种故障模式时,我只是重复这个过程,它通常会起作用。但这似乎有点乱七八糟,我不知道这是 shmget()
中的错误还是我只是做错了什么。
有什么想法吗?
最佳答案
您的 if 语句未检查返回值 - 手册页说检查 shmid_ 是否为 -1,然后检查 errno。
RETURN VALUE
A valid segment identifier, shmid, is returned on success, -1 on error.
您正在做的只是检查 errno - 它可能是在对其他函数的其他调用失败后的 ENOENT。
关于linux - shmget() 返回带有 IPC_CREAT 的 ENOENT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10645823/
我是 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 云端硬盘
我是一名优秀的程序员,十分优秀!