7得票5回答
Linux系统编程

我想学习Linux系统编程,并想知道如何入手和从哪里开始。我有Web开发背景(Python,PHP),也了解一些C和C ++。 基本上,我想知道: 1. 要学习和追求哪种语言(我认为主要是C和C ++)? 2. 如何/在哪里学习这些特定于系统编程的语言?书籍、网站、博客、教程等。 3. 有...

15得票3回答
了解安卓系统内部(深入系统)

好的,大家好,我认为这是一个正确的地方来提问问题,因为它与开发有关(如果我错了或者这是重复的问题,请告诉我)。 所以,我想要深入学习Android,从系统工作原理一直深入到内核(还要学习破解和其他黑客技术背后的内容)。我应该从哪里开始?Linux书籍?虚拟机架构? 仅仅下载源代码并没有帮助...

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

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

19得票5回答
在Linux中访问MAC层的无线接口(802.11)。

我花了最近几天的时间翻阅手册、文档和任何谷歌搜索出来的内容,但是我现在比一开始更加困惑了。 这里是我的需求:我想使用自己的第3-x层协议通过Linux系统的无线接口(802.11)发送和接收数据包,并使用C/C++语言。目前为止还好,我不需要信标、关联或任何与AP/SSID相关的东西。但是,...

12得票2回答
在Windows中以编程方式调用“main”函数

我有一个第三方控制台应用程序。我需要从我的应用程序中运行它,但我不能将其作为单独的进程运行(因为我需要使用它的依赖项:手动填充导入表,设置钩子等)。所以,我可能应该手动调用此可执行文件的main函数。这是我尝试这样做的方式: 使用auto hMod = LoadLibrary("conso...

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

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

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

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

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

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

11得票4回答
C语言中fork的工作原理

现在我遇到了一个问题,不理解fork()系统调用的工作原理。我编写了以下代码:#include<stdio.h> int main() { int a, b; b=fork(); printf("\n the value of b = %d",b); } ...

7得票2回答
无法进入系统调用源代码

我已用-g选项编译了我的freebsd libc源代码,现在我可以进入libc函数。 但是,我遇到了无法进入系统调用代码的问题。我已使用-g选项编译了freebsd内核源代码。在设置断点时,GDB会提示关于.S文件的断点信息。在触发断点后,GDB无法进入系统调用源代码。 此外,我还尝试了:...