Linux C

gdb调试中修改变量值

在调试过程中可以修改变量的值,进而调试程序,这样就避免了修改源代码,重新编译,重新测试的过程Breakpoint 1, main () at hello.c:4 4 int a = 1; (gdb) p a $1 = 0 (gdb) n 5 printf("%d...

哈希表

一般的表,如果需要查找某个关键字的记录,就得从表头开始,挨个地比较记录a[i]和key的值是否相等,如果相等就算成功找到了,返回i;假如是有序表来查找,可以通过a[i]和key来二分查找,直到找到相应的i;最终为...

再看malloc动态分配内存

一向对内存敏感性不好,或者说不太有sense,基础恶补恶补很有必要,结合刚看了下一个日本人写的关于malloc的讲解,理清下思路 malloc()是根据参数指定的尺寸来分配内存块,返回指向内存块初始位置的指针,经常用...

移位

2年前被Boss问了个问题,好像就是变量的倍数如何写,迟疑地问:不是直接乘么?然后结果可想而知,当然当时想要我回答的答案是移位,时过境迁,突然在想,如今这么潮的编译器难道不会优化成移位么 移位<<和&...

变量入栈顺序

刚随手打印地址过程中,看到了相同的两个地址#include <stdio.h> void fun1(){ int a1; printf("&a1: %p\n", &a1); } void fun2(){ int a2; printf("&a2: %p\n", &a2);...

socket双向通信

既然能够进行数据传输,那干脆再试着进行双向数据传输,就变成了简单的命令行聊天室一样,但是需要考虑几个问题 1:socket是否是双向数据传输,幸运的是肯定的 2:如果一端既发送又接收,如何调和的问题,不可能...

Linux下Socket接收数据长度为0分析

客户端和服务端已经通过socket建立起了TCP连接,接着可以进行数据传输,这里主要用到send和recv,比较简单,他们和系统调用read和write参数类似#include <sys/socket.h> ssize_t send(int sockfd, const v...

socket建立连接

通过pipe,fifo等可以直接同一台机器上进行进程间通信,而通过网络相连的机器之间进行进程间通信要用到套接字接口,实际上套接字可以用在同一台机器上,也可以用在不同的机器上;也就是既可以内部通信,又可以相...

信息存储和字节序

计算机使用8位字节块作为最小寻址和存储单位,一个字节在二进制里值域为00000000~11111111,十进制就是0~255,而这种表示方法要么太长了,要么转换太麻烦,所以就用十六进制来描述,值域为00~FF,把A的二进制记住...

Socket套接字

不论是pipe还是fifo,它们在进程进程间通信时都有资源共享,基本都只能运行在同一台机器上才行,而想要一台机器上的进程和另一台机器上的进程进行数据通信,可以用到socket套接字接口,除了可以与管道相似的方法...

FIFO阻塞读写

pipe一般都要和fork结合起来用,所以多进程都是基于一个主进程产生的,有一定的关联性,假如两个毫无相关的进程要进行进程间通信,命名管道可以实现;一个进程向FIFO写数据,另一个进程从FIFO读取数据 为了保持原...

命名管道FIFO

fork出来的进程通过普通管道pipe传递数据,而这些进程他们最先都是由一个主进程给构造出来的,也就是有相关性,而如果是想在完全不想关的进程之间传输数据,Linux下可以通过一种特殊的文件来完成,命名管道,它在...

进程管道popen

python里经常通过popen调用系统命令,并获取命令的输出结果,然后进行二次处理,是十分地简便,比如想查看下当前的Linux系统,直接调用shell命令很容易一行就能解决#!/usr/bin/env python import os print os.p...

pipe和fork

管道看上去也就创造了两个文件描述符,能够读写,好像没能体现出应有的价值,但是假如是要进程间通信,传递数据的时候,只要管道打开的两个文件描述符存在,通过调用fork创建子进程,那么两个进程可以通过管道传...

memset

将buffer所指的内存区域的前count个字节用字符ch替换,对于较大的结构体或者数组清零是个不错的操作#include <string.h> void *memset(void *s, int ch, size_t count); 实际上作用就是在一段内存块中填充...

管道

通常将一个进程的输出通过管道连接到另一个进程的输入,linux下已经对shell命令里管道符号“|”太熟悉了,起到了命令连接的作用,比如命令[lihui@localhost ~]# lspci | grep Network 0b:00.0 Ethernet controller:...

信号量线程同步

信号量是一种特殊类型的变量,可以被增加和减少,但是对其的访问被保证是原子操作,就算是多线程中也是如此,这样如果多个地方都试图修改信号量的值,能够保证以此进行 二进制信号量只有0和1两种取值,而计数信号...

浙ICP备16024533号

浙公网安备 33010802007459号