c - 如果在带有 tmpfs 的容器中运行,为什么介子无法确定 time_t 的大小?
问题描述
受 systemdmeson.build
文件的启发,我创建了以下文件:
project('test','c')
cc = meson.get_compiler('c')
cc.sizeof('time_t', prefix : '#include <sys/time.h>')
如果我在容器中运行它并通过docker run --rm -it ubuntu:18.04 bash
安装介子apt update && apt install -y meson gcc
,这将按预期工作,返回:
检查“time_t”的大小:8
但是,将标志添加--tmpfs /tmp
到docker run
,结果是这样的:
检查“time_t”的大小:-1
为什么会这样?介子可能会在其中创建临时可执行文件/tmp
吗?
解决方案
在比较了/tmp
两个容器中的挂载选项之后,结果非常简单:docker 似乎noexec
默认设置,这就是为什么你必须显式设置exec
标志:
--tmpfs /tmp:rw,nosuid,nodev,exec
推荐阅读
- html - Buffer.toString("utf16le") 的 HTML DOM 等效项
- python - 如何使用提示的用户输入重命名熊猫数据框中的列而不重新格式化数据框
- spring-boot - Google Cloud Build 中的 Spring Boot 应用程序出错 - 创建工作版本但报告构建失败
- java - NumberFormatException 在必要错误之前打印
- c++ - 寻找无向图的最重路径
- java - 在进行 CPU Bound 工作时 Thead.onSpinWait() 有什么好处吗?
- go - 作为指针与值的服务依赖关系
- javascript - 从对象/测试数组中查找属性
- python - 为什么我在操作系统级别看到的线程多于我的代码产生的线程?
- npm - 更好的 npm-audit 与 Nuxt 项目的 npm 标准审计