
Linux网络编程
sunshineofbeach
脚踏实地
展开
-
fork vfork 父进程和子进程的内存关系
fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,linux中引入了“写时复制“技术,也就是只有进程空间的各段的内容要发生变化时,才会将父进程的内容复制一份给子进程。于是起初我就感到奇怪,子进程的物理空间没有代码,怎么去取指令执行exec系统调用呢?!原来在fork之后exec之前两个进程用的是相同的物理空间(内存区),子进程的代码段、数据段、堆栈都转载 2014-12-05 09:42:16 · 2561 阅读 · 0 评论 -
fork vfork clone区别
在Linux中主要提供了fork、vfork、clone三个进程创建方法。问题 在linux源码中这三个调用的执行过程是执行fork(),vfork(),clone()时,通过一个系统调用表映射到sys_fork(),sys_vfork(),sys_clone(),再在这三个函数中去调用do_fork()去做具体的创建进程工作。forkfork创建一个进程时,转载 2014-12-05 10:29:55 · 617 阅读 · 0 评论 -
关于socket编程中常用的基本函数
apue第三章:1.字节顺序转换函数; 用于主机字节序和网络字节序之间的转换,因为两者存储方式可能不一样。2.地址转换函数: 用于点分十进制字符串(ASCII码字符串)和网络字节序二进制字符串(用于sockaddr中)之间的转换 上面3个函数只能用于IPv4地址,其中inet_addr已经不常用了,我们只要记住另两个函数,a表示ASCI原创 2014-12-09 10:47:00 · 573 阅读 · 0 评论 -
signal集程序一点疑问
程序:#include #include void checkset(); void main() { sigset_t blockset; sigemptyset(&blockset); sigaddset(&blockset,SIGINT);原创 2014-11-27 17:38:55 · 512 阅读 · 0 评论 -
TCP连接,数据传送,结束。
那么在TCP三次握手过程中做了哪些事呢?先来看看TCP报文段首部的格式:TCP客户端在第一次握手时会向服务器端发送一个报文段,没有传送数据,会将原端口号和目地端口号,初始化报文的序号,并将SYN标致置为1,表明现在是哪两个进程之间在建立链接、发送的初始序列号是多少等,客户端能接收的报文大小的窗口是多大等信息告诉服务器端。同样,服务器端在接收到客户端的SYN报文后,会对客户端做出响应,表原创 2014-12-08 20:16:57 · 1871 阅读 · 0 评论 -
僵死进程
1.僵死进程的产生:在每个进程调用exit()退出的时候,内核释放该进程所有的资源包括打开的文件,占用的内存等,但是仍然为其保留一定的信息(包括进程号,退出状态 ,运行时间等), 直到父进程通过wait/waitpid来取时才释放。在unix术语中,一个已经终止但是父进程还尚未对其做善后处理的进程成为僵死进程。僵死进程保证了父进程可以获取到该进程结束时的状态信息。在Linux进程的状态转载 2014-11-26 20:47:16 · 460 阅读 · 0 评论 -
进程 、进程组、会话、控制终端之间的关系
APUE学习记录:一个进程组可以包含多个进程 进程组中的这些进程之间不是孤立的,他们彼此之间或者存在者父子、兄弟关系,或者在功能有相近的联系。 那linux为什么要有进程组呢?其实提供进程组就是方便管理这些进程。假设要完成一个任务,需要同时并发100个进程,当用户由于 某种原因要终止这个任务时,要是没有进程组,就需要一个个去杀死这些进程,设置了进程组原创 2014-12-12 11:30:30 · 10677 阅读 · 1 评论 -
Linux Socket编程
1. 网络中进程之间如何通信进 程通信的概念最初来源于单机系统。由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进程之间既互不干扰又协调一致工作,操作系统为进程通信提供了相应设施,如UNIX BSD有:管道(pipe)、命名管道(named pipe)软中断信号(signal)UNIX system V有:消息(message)、共享存储区(share转载 2014-11-21 15:32:05 · 491 阅读 · 0 评论