Linux服务端编程FAQ


Java Concurrency In Practiceby 浅奕

Java Concurrency In Practice 第一章 介绍 线程的优势: 充分利用多处理器 简化模型 简化异步事件的处理...

Read More

如何用访问内存地址的方式修改文件by 浅奕

问题描述 使用mmap系统调用把一个文件映射到虚拟地址空间,然后用访问内存地址的方式修改这个文件。

Read More

实现一个抓包分析的小程序(使用Raw Socket或者libpcap库)by 浅奕

问题描述 实现一个抓包分析的小程序,使用Raw Socket或者libpcap库均可。

Read More

数据报(UDP)套接字是否能调用connect函数,使用后效果如何?by 浅奕

问题描述 数据报(UDP)套接字使用sendto发送数据,不需要调用connect函数先建立连接。那……能使用这个系统调用吗?使用后效果如何?

Read More

学习ARP协议,写一个广播ARP欺骗的程序。by 浅奕

问题描述 学习ARP协议,写一个广播ARP欺骗的程序,让实验室的小伙伴都上不了网。(改进它,让大家能上网,但是数据都从你的电脑经过,抓包看看大家都在干嘛)

Read More

局域网中做到部分广播by 浅奕

问题描述 在局域网发送UDP广播,大家都会收到这个包。那如果想部分广播能做到吗?Show me the code.

Read More

采用非阻塞套接字加IO复用的方式实现一个服务器小程序by 浅奕

问题描述 自己定义一种网络消息格式,采用非阻塞套接字加IO复用的方式实现一个服务器小程序。客户端模拟各种情况发给服务端(半个半个发,中间sleep一下,两个拼一起发,甚至一个字节一个字节发),要求服务端不出错的解析出所有包。

Read More

关于Unix信号by 浅奕

问题描述 Unix信号都是不可靠的吗?(不排队,可能丢失……)在服务端编程中,需要处理/忽略哪些信号呢? 意义:服务端编程必须考虑到信号对程序的影响,另外nginx也是依靠信号实现配置文件更新后热替换老进程的。

Read More

select、poll和epoll的区别by 浅奕

问题描述 Linux下IO复用经过了select、poll和epoll的变迁,你能横向对比他们的不同和适用场合吗?

Read More

解析出mp3文件的ID3信息by 浅奕

问题描述 mp3文件中有一段信息称之为ID3,记录了该mp3的歌手,标题,专辑名称,年代,风格等信息。试着写一个程序,能递归的对一个目录中的文件名杂乱的MP3文件根据ID3信息重命名。命名格式为“歌名-歌手.mp3” 涉及知识点:Linux文件和目录操作,MP3文件中ID3的格式。

Read More

Linux如何实现模拟键盘和鼠标动作by 浅奕

问题描述 Linux如何实现模拟键盘和鼠标动作? 提示:从X-window入手

Read More

Linux如何打印函数调用栈by 浅奕

问题描述 大家知道Java抛出异常的时候能打印出函数调用栈,那我们的C/C++程序想实现的话怎么做呢?gdb能做到,那我们自己的代码如何实现呢? 提示:有个系统调用叫 backtrace(如果你自己实现了这个函数,那就碉堡了) 意义:理解ELF文件格式,文件操作等等。

Read More

Java在何处调用OS的APIby 浅奕

问题描述 小组有学习Java的同学,那么请问Java是在什么地方调用了OS的API呢? 比如,System.out.println(“hello”); 这一句将hello输出到了标准输出设备,你能跟踪到最终的系统调用在何处吗?

Read More

Linux如何监视某个目录下文件的变化by 浅奕

问题描述 Linux如何监视某个目录下文件的变化? 提示:inotify 意义:Linux文件和目录操作,系统监控软件的模块,动态检查配置文件变化等等。

Read More

为什么非阻塞型套接字需要用户态的读写buffer?by 浅奕

问题描述 为什么非阻塞型套接字需要用户态的读写buffer?

Read More

为什么不能在多线程程序中使用fork函数?by 浅奕

问题描述 为什么不能在多线程程序中使用fork函数?有例外吗?(回答出linux线程模型变迁为好) By: 高源 历史背景: 在Linux创建的初期,内核一直就没有实现“线程”这个东西。后来因为实际的需求,便逐步产生了LinuxThreads这个项目,其主要的贡献者是Xavier Leroy。LinuxThreads项目使用了clone()这个系统调用对线程进行了模拟,按照《Linux内核设计与实现》的说法,调用clone()函数参数是 clone(CLONE_VM | CLONE_FS...

Read More

什么是内存泄漏?什么是内存碎片?by 浅奕

问题描述 什么是内存泄漏?什么是内存碎片?如何在代码中检测内存泄漏,给出可行性方案(自己实现和使用工具均可)。

Read More

如何使用UDP协议连接两个局域网内的主机?by 浅奕

问题描述 如何使用UDP协议连接两个局域网内的主机?(如果一个有公网IP很容易,那么都在内网怎么办?提醒:可以借助一个有公网IP的服务器,先思考,之后可Google关键字“服务器辅助内网穿透”,或者“UDP打洞”更容易搜出结果)

Read More

用共享内存传递std:mapby 浅奕

问题描述 如何用Linux的IPC机制——共享内存传递C++STL库的map数据结构?不必给出实现,写出思路和分析过程即可。

Read More

read函数的返回值含义by 浅奕

问题描述 read函数(man2)的返回值有什么含义?(当然没这么简单,请说出read用于设备文件,普通文件和套接字时候的返回值含义,套接字区分阻塞型和非阻塞型) By 崔姣姣 在文件那一章我们用到了read函数,它可以读取设备文件和普通文件中的数据,同时在网络编程中也会用到该函数,读取来自socket的数据。 NO.1 read函数的基本原型 ssize_t read(int fd,...

Read More