入门
-
包含了正确的头文件只能编译通过,没链接正确的库链接会报错。
-
一些常用的库gcc会自动链接。
-
库的缺省路径/lib /usr/lib /usr/local/lib
-
不知道某个函数在那个库可以nm -o /lib *.so | grep 函数名
-
man sin 会列出包含的头文件和链接的库名。man 2 sin 2表示系统调用,3表示c库函数
-
一旦子进程被创建,父子进程一起从fork处被创建。创建子进程为了争夺资源。
-
重定向用dup2函数
-
kill -l查看信号种类
-
pthread_mutex不跨进程,ipc中的信号量跨进程,但linux不支持无名信号量。信号灯的主要用途是保护临界资源。多进程访问共享内存,用信号量同步。
-
alarm(5)5秒后向自己发送SIGALARM信号,缺省处理是结束进程,不自定义就会结束进程。通过对信号集加减信号,确定信号屏蔽字。在信号处理程序被调用时,操作系统建立的新信号屏蔽字包括正在被递送的信号,如果此时这个信号再次发生,将阻塞到前一个处理完,多次发生不排队只处理一次。 sa_mask会被加到信号屏蔽字中。
-
netstat -an|grep A |grep ESTABLISHED | grep B,查看ip为A的服务器是否在端口B建立了连接
-
由于我们的连接都是常连接,故可以按照客户端与服务器端建立的连接端口进行判断。
-
IP协议是网络层协议,主要发送数据包。UDP基于IP协议,用在传输层。TCP协议建立在IP协议之上,可靠的、按顺序发送的。
-
TCP连接三次握手:客户机向服务器发包。服务器给客户机回包。客户机收到包,向服务器发送确认信息完成连接。服务器收到确认信息也完成连接。
-
ioctl可以控制所有文件描述符的情况。
-
循环服务器:UDP服务器,UDP是非面向连接的,没有一个客户机可以老是占着服务器。
-
TCP循环服务器一次只能处理一个,close后才能处理下一个。
-
TCP并发服务器:fork子进程来处理。创建子进程消耗资源。
-
并发服务器:多路IO复用。
-
当我们创建一个正常的TCP套接字的时候,我们只处理内容,不负责TCP头部和ip头部,自己创建头部使用setsockopt。
-
网络程序一般是多进程加上多线程。
-
g++参数-pg产生gprof性能信息,gprof好像是g++自带的
-
(gdb)make使你能不退出gdb就能产生就重新产生可执行文件 , shell 不退出gdb就执行shell
-
file a.out可以在gdb模式下载入程序。
-
服务器端:socket->bind->list