问题标签 [systems-programming]
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.
c - 无法成功使用“execve()”
该程序的目的是派生一个新的子进程并执行一个也具有命令行参数的进程。如果我输入/bin/ls --help
,我会收到错误:
什么是正确的论点execve()
?
c - Unix 系统编程 - 以编程方式解压缩文件
我需要做的是解压缩文件(.gz 或 .z),读取第一行并根据读取的第一行做一些事情。但是 C 标准库似乎没有提供这样做的方法。
是一种独立于平台的方式吗?
java - NACHOS(JAVA 版) 教程【设置及简单示例】
我需要在 Linux 中设置 NACHOS java 版本并运行一些简单的示例。如何设置和运行简单示例?需要一些教程和一些计算机作业以及 NACHOS 的解决方案
c++ - 在 C/C++ 中直接写入内存地址的最短代码是什么?
我正在为没有内存保护的嵌入式系统编写系统级代码(在 ARM Cortex-M1 上,使用 gcc 4.3 编译)并且需要直接读取/写入内存映射寄存器。到目前为止,我的代码如下所示:
有没有不使用指针的更短的方法(我的意思是代码更短)?我正在寻找一种方法来编写如此短的实际分配代码(如果我不得不使用更多#defines 就可以了):
到目前为止,我尝试的任何事情都以 gcc 抱怨它无法将某些东西分配给左值而告终...
c - wait() 后检查状态
创建子进程并立即退出(_exit())后,我想执行等待并检查状态。现在我想知道在 if/else 构造的“else”分支中是否还需要检查 WIFSIGNALED。据我了解,如果我执行等待,a) 可能发生错误 (-1),子进程可能已由 (exit() 或 _exit()) 正常终止,或者它可能已被终止信号,所以检查可以省略,对吧?
c++ - 直接跳转到另一个 C++ 函数
我正在将一个小型学术操作系统从 TriCore 移植到 ARM Cortex(Thumb-2 指令集)。为了让调度程序工作,我有时需要直接跳转到另一个函数而不修改堆栈或链接寄存器。
在 TriCore(或者更确切地说,在 tricore-g++)上,这个包装模板(对于任何三参数函数)有效:
这将生成汇编指令J
(又名 JUMP)而不是CALL
,当跳转到(否则正常)C++ 函数时,堆栈和 CSA 保持不变superDispatch(SchedulerImplementation* obj, Task::Id from, Task::Id to)
。
现在我需要在 ARM Cortex(或者更确切地说,对于 arm-none-linux-gnueabi-g++)上的等效行为,即生成B
(又名 BRANCH)指令而不是BLX
(又名带有链接和交换的 BRANCH)。但是 arm-g++ 没有interrupt_handler
属性,我找不到任何等效的属性。
所以我尝试asm volatile
直接使用并编写 asm 代码:
到目前为止,这么好,至少在我的理论中。Thumb-2 需要在寄存器中传递函数参数,即在这种情况下为 r0..r2,因此它应该可以工作。
但是然后链接器死了
在 asm 语句的右括号上……我不知道该怎么做。好吧,我不是 C++ 方面的专家,而且 asm 语法也不是很简单……所以有人给我提示吗?提示正确__attribute__
arm-g++ 是一种方法,提示修复 asm 代码将是另一种方法。另一种方法可能是在输入 asm 语句时告诉编译器a1..a3
应该已经在寄存器r0..r2
中(我调查了一下,但没有找到任何提示)。
paging - pagesize 及其与 4096 的比率
是否存在最小内存页面(页面大小)的大小不能被 2 或 1024、4096 整除的系统?
可以是3000还是3500?
如果 pagesize 不能被 1024 整除,任何 posix 程序都会中断吗?
c++ - Boost 线程特定存储问题 (boost/thread/tss.hpp)
boost 线程库具有线程特定(本地)存储的抽象。我浏览了源代码,似乎 TSS 功能可以在任何现有线程的应用程序中使用,无论它是从 boost::thread 创建的天气如何——也就是说,这意味着某些回调已向内核注册以挂钩回调函数,当线程或进程超出范围时,该函数可能调用任何 TSS 对象的析构函数。我找到了这些回调。
我需要在各种 Web 服务器的工作线程中缓存来自 OpenSSL 的 HMAC_CTX(请参阅这个,详细的,关于我要做什么的问题),因此我不控制线程的生命周期 - 网络-服务器可以。因此,我将在不是由 boost::thread 创建的线程上使用 TSS 功能。
我只是想在开始实现缓存逻辑之前验证我的假设,我的逻辑有什么缺陷吗?
multithreading - 可移植线程特定存储机制的命名方案如何生成线程相关唯一标识符?
一个可移植的线程特定存储引用/身份机制,其中 boost/thread/tss.hpp 是一个实例,需要一种为其自身生成唯一密钥的方法。该键在线程范围内是唯一的,随后用于检索它所引用的对象。这种机制用于以线程中立方式编写的代码中。
既然 boost 是这个概念的一个可移植的例子,那么这种机制具体是如何工作的呢?
windows - SysInternal 的 WinObj 设备列表机制
SysInternals 的 WinObj 可以列出所有设备对象。
我想知道它如何列出设备。
有没有我们可以阅读的开源代码?(或代码片段)
我应该知道的最重要的功能是什么?