随笔分类 - linux
摘要:1. 信号处理问题 对于相同信号,按信号的先后顺序依次处理。可能会产生的问题是,正在处理sig1信号时,又来了2个或更多的sig1信号,此sig1时只会在处理完原来的sig1信号后,再处理1个sig1信号。因此对于相同信号,会产生信号掉包的问题。 一个儿子退了之后,程序在处理handler(),如果
阅读全文
摘要:思路 主线程负责发送消息,另一线程负责接收消息。服务端和客户端均是如此。 注意 当A方close掉用于通信的socket端口后,该端口是不会立即关闭的。因为此时可能B方的信息还没send完。因此,此时A方的recv仍旧处于阻塞状态,会最后再等待收一次信息。此时,当B方send一个信息给A后,A方re
阅读全文
摘要:1. server端维护一个链表,用于存放客户端的联系方式。结构如下: typedef struct sockaddr_in SA ; typedef struct client_tag { SA ct_addr; struct client_tag* ct_next; }CNODE, *pcNOD
阅读全文
摘要:数据存储优先顺序的转换 计算机数据存储有两种字节优先顺序:高位字节优先(称为大端模式)和低位字节优先(称为小端模式)。内存的低地址存储数据的低字节,高地址存储数据的高字节的方式叫小端模式。内存的高地址存储数据的低字节,低地址存储数据高字节的方式称为大端模式。 eg:对于内存中存放的数0x123456
阅读全文
摘要:客户端将需要解决的task发送给服务器,服务器调用线程来解决客户端发送的task,解决完由线程负责将其发送回客户端。(用管道实现通信) 1. server维护两个列表。一是客户端列表。二是任务列表。分别如下: /* 客户端列表 */ typedef struct tag_fds { int s_rf
阅读全文
摘要:条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待条件变量的条件成立而挂起(此时不再占用cpu);另一个线程使条件成立(给出条件成立信号)。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。 /* 等待条件 */ /* 注意:pthread_cond_wait
阅读全文
摘要:ctrl + c --> 2)SIGINT ctrl + \ --> 3)SIGQUIT 13)SIGPIPE 当管道读端关闭,再往管道写东西,会发出SIGPIPE信号 17)SIGCHLD 子进程退出会向父进程发出SIGCHLD信号,系统默认处理是忽略掉该信号 #include<stdio.h>
阅读全文
摘要:#include <stdio.h> #include <stdlib.h> #include <string.h> #include <pthread.h> int ticket_cnt = 20; /* 共有20张票 */ typedef struct tag { int s_id; pthre
阅读全文
摘要:select函数对数据结构fd_set进行操作,fd_set是一个bitmap,该集合由打开的文件描述符构成。 对于管道而言,select是通过检查管道是否阻塞,来进行监听的。只要所监听的管道非阻塞,select就能立马获知,并将其在fd_set中的相应为置1。管道非阻塞只有两种情况,一种是客户端向
阅读全文
摘要:FILE * popen ( const char * command , const char * type ); 第一个参数是命令,不是文件名 popen() 函数通过创建一个管道,调用 fork 产生一个子进程,执行一个 shell 以运行命令来开启一个进程。这个进程必须由 pclose()
阅读全文
摘要:fread从文件流stream 中读取nmemb个元素,写到ptr指向的内存中,每个元素的大小为size个字节。 fwrite从ptr指向的内存中读取nmemb个元素,写到文件流stream中,每个元素size个字节。 所有的文件读写函数都从文件的当前读写点开始读写,读写完以后,当前读写点自动往后移
阅读全文
摘要://第一个程序先发后收#include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdlib.h> #include <string.h> int main(int arg
阅读全文
摘要:由于匿名管道使用的是文件描述符,所以我们只能用read和write对其进行读写。因为标准读写函数都是基于文件指针的。 当read成功时,返回值为读到的字符数。当遇见文件结尾时,返回0(也就是什么都读不出来了)。出错,返回-1。—> 参考 man 2 read 当write成功时,返回值为写入的字符数
阅读全文
摘要:client.c #include"my_sort.h" //my_sort 放在include中,里面包含my_socket.h#define MY_IP "127.0.0.1"#define MY_PORT 6666#define SER_IP "127.0.0.1"#define SER_PO
阅读全文
摘要:my_socket.h #ifndef __MY_SOCKET_H__ #define __MY_SOCKET_H__ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <s
阅读全文
摘要:my_socket.h #ifndef __MY_SOCKET_H__ #define __MY_SOCKET_H__ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <s
阅读全文

浙公网安备 33010602011771号