最近这段时间,主要做linux下的网络编程。但是已不是以前的那种简单的sockent通信,已经设计到定协议,定接口,几个人共同合作,然后到最后再一起调试。
经过这段时间的敲代码,我也学到很多东西。首先是学会协同合作,几个人一起编,那么久必须先把接口定好,这样到最后才可以合起来。这两天我也体验了联调程序,第一天调试到晚上11点半,第二天调试到晚上1点。程序不是一个人跑通了就好了,得大家联合起来一起跑通才能正在的起作用。很好,学习了。联调结束后,终于可以放松放松了。今天我也来温故一下以前看的线程和进程的知识,以前也看过一个次,但是到自己用过之后,再来看一遍,那么印象就会更加深刻。对了,还有一点,前段时间我在写程序的时候,遇到问题每次找F哥,他都能耐心的解答,每次和我一起分析问题并总能把问题解决。我觉得每次把问题解决之后,他一定也能学到很多的东西,同时也锻炼了分析问题、解决问题的思路,这很重要。所以以后不管谁有问题要问我,我也应该尽自己的所能去给别人解决,这样自己也学到很多东西。
进程
进程是处于动态条件下由操作系统维护的系统资源管理实体。
一、进程的创建方式:
1.fork():进程复制,只有进程号和内存与父进程不一样,其他与父进程共享。
2.system():调用shell的外部命令在当前进程中开始另一个进程,会阻塞当前进程直到命令执行完毕,可以直接调用shell命令。
3.exec()系列函数:用新进程代替原有的进程,系统会从新的进程运行,新的进程的PID值与原来进程的PID值相同。exec函数执行成功后不会返回。使用exec()函数比 较普遍的一种方法是先使用fork()函数分叉进程,然后在新的进程中调用exec函数,这样exec会占用与原来一样的系统资源来运行。
二、进程间通信和同步
1.管道:int pipe(int filedes[2]); 得到两个文件描述符来保存管道。filedes[0]是为了读操作而创建和打开的。filedes[1]是为了写操作而创建打开的。读进程要把写端关 闭,写进程要把读端关闭。
2.命名管道(fifo)
3.消息队列:这个不知道重不重要,但是貌似很复杂的样子,到时再回头把这看看吧。
4.信号量:貌似进程的信号量也很复杂,没看。
5.共享内存:没看。。。
线程
一、线程创建和推出
pthread_create(),pthread_join(),pthread_exit().到具体用的时候查就好了。
二、线程间互斥---互斥锁
pthread_mutex_init(),pthread_mutex_lock(),pthread_mutex_unlock().
三、线程中的信号量 sem。信号量实际上是一个非负的整数计数器,用来实现对公共资源的控制。
sem_init():创建信号量并初始化
sem_post():增加信号量的值
sem_wait():减少信号量的值
sem_destroy():释放信号量
明天深入学习linux socket编程,并做总结。