如何以编程方式确定“写入”是否被写入?系统调用在特定文件上是原子的吗?
在某些情况下,编码器不能依赖原子的系统调用,例如,如果文件位于 NFS 文件系统上。 (参见 NFS 概述、常见问题解答和 HOWTO 文档)。但大多数数据库…
静态链接可执行文件的启动代码会发出如此多的系统调用?
我正在尝试静态编译一个最小程序并检查发出的系统调用: $ cat hello.c #include int main (void) { write(1, "Hello world!", 12); return 0; } $ gc…
v2.6.39.4 中的文件entry.S 在哪里?
我正在研究linux中的系统调用,源代码版本为2.6.39.4。 书上说系统调用是在entry.S中实现的,位于arch/i386/kernel/entry.S, 但我在 v2.6.39.4 中找…
系统调用挂钩时出现问题
我使用以下模块代码来挂钩系统调用(代码归功于其他人,例如 Linux内核:系统调用挂钩示例)。 #include #include #include #include #include #inclu…
Linux 内核源代码中系统调用/陷阱的实现
我目前正在学习操作系统如何使用陷阱来促进 Linux 内核中的系统调用。我在 traps.c 中找到了陷阱表,并在entry.S 中找到了许多陷阱的实现。 然而,我…
C 指针 void * 缓冲区问题
很抱歉用 C 的东西打扰了大家。 write() 需要 void * buff。我需要通过提供所需的数据从 main() 调用此函数。 但是当我打印时它会抛出错误。朋友们帮…
函数 execve 的实现(unistd.h)
如何查看函数 execve 的实现(在 x86_64 Linux 下),它位于 unistd 库中? 我想要这个是因为我想知道如何使用汇编程序调用外部程序,而不调用 execve…
在缓慢的系统调用中处理 SIGINT
我对 Python 很陌生,所以如果这个问题非常基本,请原谅我。 我试图在使用选择模块从套接字接受数据时处理键盘中断。因此,我有一个 select.select() …
额外的 memset() 导致系统调用 open() 失败
我按照教程 /dev 中创建了一个节点title="Look at Example 4-1.chardev.c">这里 (chardev.c),我尝试访问使用以下命令创建的 /dev/chardev 中的设备代…
使用 gdb 进入 swapcontext()
我正在做一个进行unix系统调用的项目。具体来说,我的项目严重依赖对 getcontext()、makecontext()、swapcontext() 和 setcontext() 的调用。我尝试使…
Frenzapp如何获取其他应用程序的版本?
有谁知道 Frenzapp 如何获取其他已安装应用程序的版本? 他们可能使用 sysctl 枚举正在运行的进程,为每个进程返回 kinfo_proc 结构。查看 kinfo_proc…
gettimeofday 系统调用如何工作?
gettimeofday 是一个 x86-86 的系统调用,根据此页面 (只需在框中搜索gettimeofday): int gettimeofday(struct timeval *tv, struct timezone *tz)…
如何在汇编中将 RAX 中的值写入 STDOUT?
我可以使用 syscall 进行 write 将内存中的一些数据打印到 STDOUT: ssize_t write(int fd, const void *buf, size_t count); 也就是说: movq $1, %r…