读《用TCP/IP进行网际互连——客户-服务器编程与应用(Linux/POSIX套接字版)》
第1章 引言和概述
TELNET的在LINUX和WIN7中的使用以及在WIN7中的启用方法
http://blog.csdn.net/qq_27607539/article/details/73715679
第2章 客户-服务器模型与软件设计
这章还为参透,之后看看能不能有所感悟吧。
第3章 客户-服务器软件中的并发处理
并发执行。
进程与线程的变量共享问题。
当多个线程并发地执行同一段代码时,对这段代码所涉及的变量,每个线程都应各有一份独立的副本。
每个进程拥有全局变量的副本;如果多个线程在同一个进程内执行,则它们各自拥有局部变量的副本,但都可共享进程的全局变量副本。
当多个线程并发地执行一段代码时,每个线程拥有自己的栈。
LINUX下的多进程编程。
fork()函数用来将运行着的程序分成2个几乎完全一样的进程,每个进程都启动一个从代码的同一位置开始执行的线程。
fork调用新创建的进程都是单线程的。
返回值: 若成功调用一次则返回两个值,子进程返回0,父进程返回子进程标记;否则,出错返回-1。
包含头文件
#include<unistd.h>
#include<sys/types.h>
编程示例
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
int main(void){
int pid;
pid=fork();
if(pid==-1) return -1;
if(pid==0){
//子进程
printf("这里是子进程!\n");
}else{
//父进程
printf("这里是父进程!\n");
printf("子进程的PID=%d\n",pid);
return 0;
}
}
LINUX下的C编译方法参考
http://blog.csdn.net/qq_27607539/article/details/73721946
上述代码编译运行结果如下:
进程之间是并发执行的,子进程的输出不一定在前。