11得票1回答
在ptrace调用中的(ORIG_EAX*4)是什么意思?

我正在查看一篇文章(这里),并尝试运行下面复制的代码片段:#include <sys/ptrace.h> #include <sys/types.h> #include <sys/wait.h> #include <unistd.h> #incl...

11得票3回答
动态导入的函数能否通过它们的名称唯一识别?

我使用了readelf --dyn-sym my_elf_binary | grep FUNC | grep UND 要显示my_elf_binary中动态导入的函数,具体来说是从.dynsym节中的动态符号表中。示例输出如下: [...] 3: 00000000 0 FUNC ...

11得票5回答
如何规范地指定将数据原子写入普通文件(而非管道或FIFO)?

posix标准规定,当向管道或FIFO写入少于PIPE_BUF字节时,将被授予原子性,也就是说,我们的写操作不会与其他进程混合。但我没有找到标准如何规定常规文件。我的意思是,如果我们写入小于PIPE_BUF的数据,它也将被授予原子性。但我想知道常规文件是否有这样的限制?我的意思是,管道具有容量...

10得票3回答
能否用C或C++实现一个小型磁盘操作系统?

我并不打算这样做,而只是出于好奇想知道是否可以使用 C 和/或 C++ 实现一个“完整的操作系统”(不一定像 Linux 或 Microsoft Windows 这样大型的操作系统,而更像一个小的类 DOS 操作系统),并且尽量不使用汇编语言。 通过实现操作系统,我的意思是从引导加载程序和内...

9得票3回答
如何以编程方式真正清除删除的文件?

所以,您即将把工作电脑交给同事。您如何确保真正删除了所有个人数据? 重新格式化、重新安装操作系统并不能真正解决问题。 我搜索了一下,发现有些程序可以“擦除”磁盘,例如KillDisk、GuidanceSoftware和HDD Wipe Tool。 这让我想起了这些程序是如何工作的? 我的...

9得票2回答
如何利用VDSO对象来开发您自己的编程语言?

最近的Linux内核(至少在amd64上)提供了一个神奇的目标文件,名为linux-vdso.so.1,它抽象了系统调用接口到内核,允许内核选择最优的调用约定。如果您使用C语言编写代码,则glibc会自动使用此对象。 现在,如果我想编写一个不使用glibc的程序,我该如何使用这个对象?它所提...

8得票1回答
使用sigaction()函数,C语言

我正在阅读关于sigaction()的一些资料(来自我的课程笔记),但我不确定我是否理解了这段文字: 信号掩码仅在信号处理程序执行期间计算和安装。 默认情况下,当发生信号时,“sig”信号也会被阻塞。 一旦使用sigaction为特定信号安装了一个操作,它将一直保留,直到另一个操作被显式请...

7得票10回答
C/C++如何判断程序是否已经在运行?

在Windows环境下,我不希望同时运行两个程序实例。 相关 使用互斥对象来防止同一程序的多个实例同时运行是否安全?

7得票2回答
直接跳转到另一个C++函数

我将一个小型的学术操作系统从TriCore移植到ARM Cortex(Thumb-2指令集)。为了使调度器正常工作,有时候需要直接跳转到另一个函数而不修改堆栈或链接寄存器。 在TriCore(或者更确切地说是tricore-g++)上,以下这个包装模板(适用于任意三个参数函数)可以起到作用:...

7得票2回答
从设备管理器获取信息的方法是什么?

我在我的C#应用程序中怎样才能读取设备的特定信息呢? 我已经尝试了WMI,但它没有提供我需要的信息。 我想要的信息存储在设备的"详细信息"选项卡中,我想要的信息是“父级”。 我也在注册表编辑器中查找过,但没有任何运气。