199得票9回答
以编程方式获取缓存行大小?

欢迎所有平台,但请在回答中指定所使用的平台。 类似问题:如何以编程方式在C++中获取CPU缓存页面大小?

187得票9回答
为什么要使用bzero而不是memset?

在我上学期修读的系统编程课中,我们必须使用C语言实现基本的客户端/服务器。当初始化结构体(如sock_addr_in)或字符缓冲区(用于在客户端和服务器之间发送数据)时,教授指示我们仅使用bzero而不是memset来初始化它们。他从未解释过原因,我很好奇是否有有效的理由。 我在这里看到:h...

135得票7回答
Linux中打开的文件处理器会发生什么如果所指向的文件被移动或删除?

在Linux操作系统中,如果指向的文件被以下方式更改: 移动 -> 文件句柄是否仍然有效? 删除 -> 是否导致EBADF错误,表示无效的文件句柄? 替换为新文件 -> 文件句柄指向此新文件吗? 替换为新文件的硬链接 -> 我的文件句柄是否"跟随"该链接? 替换为新文件的软链接 -> 我的...

76得票6回答
为什么这个程序会打印出“forked!”四次?

这个程序为什么会打印出“forked!”四次?#include <stdio.h> #include <unistd.h> int main(void) { fork() && (fork() || fork()); printf("for...

68得票3回答
如何创建一个守护进程

我想了解如何将我的程序变成守护进程。一般来说,一个程序要想成为守护进程,需要执行以下步骤: 调用 fork()。 在父进程中调用 exit()。这样做可以确保原始父进程(即守护进程的祖先)满意其子进程已经终止,守护进程的父进程已经停止运行,并且守护进程不是进程组的领导者。最后一点是下一步成...

47得票2回答
*nix中select和exceptfds/errorfds的语义

select系统调用需要3个文件描述符集,用于监视文件描述符的可读/可写和“异常”。 我的man page关于exceptfd描述符集并没有说明很多。它的作用是什么?文件描述符上可能会通知哪些类型的异常? 我假设这可能因描述符类型而异......无论是TCP套接字、管道、tty等)。是否有...

27得票2回答
64位的Windows是否使用KERNEL64?

我用dumpbin查看了一些库,发现所有的64位版本都链接到KERNEL32。在64位Windows中没有KERNEL64吗?如果没有,为什么呢? 我的所有操作系统都是32位的,所以我不能直接查看。通过谷歌搜索找不到有价值的信息,所以我怀疑64位Windows中没有KERNEL64,但是我还...

27得票4回答
使用信号量实现N进程屏障

我目前正在为一次包含早先的迭代的OS考试做准备,我遇到了这个问题: 实现一个“N进程屏障”,即确保每个进程都在其执行过程中的某个点等待其他进程到达给定点。 您可以使用以下操作: init(sem,value),wait(sem) 和 signal(sem) N是任意数字。我可以使它适用于给...

24得票5回答
对alloca的使用和滥用

我正在开发一个软实时事件处理系统。我希望尽可能减少代码中具有非确定性时间的调用。我需要构建一个包含字符串、数字、时间戳和GUID的消息,可能使用std::vector和boost::variant。 在过去的类似项目中,我一直想使用alloca函数。然而,在研究系统编程文献时,总是会对这个函...

23得票19回答
我们必须使用C语言“出于性能原因”。

在这个多语言时代,似乎每项任务都有合适的编程语言。然而,我在职业生涯中一直与“只有C语言才快”的信条抗争,其中“快”实际上意味着“足够快”。我与非常理性、开明的同事共事,他们喜欢比较数字,而我只有思想和观点。你能帮助我摆脱主观看法,并进入“现实世界”吗? 你能否帮我找到相关研究,了解嵌入式和...