Linux
文章平均质量分 72
eversliver
这个作者很懒,什么都没留下…
展开
-
关于线程间IPC
mutex:多线程经常会出现访问冲突的情况,解决的办法是引入互斥锁。获得锁的线程可以完成“读-修改-写”的操作,然后释放锁给其它线程,没有获得锁的线程只能等待而不能访问共享数据,这样“读-修改-写”三步操作组成一个原子操作,要么都执行,要么都不执行,不会执行到中间被打断,也不会在其它处理器上并行做这个操作。Mutex用 pthread_mutex_t 类型的变量表示,可以通过下面的方式初始原创 2016-01-16 11:48:39 · 368 阅读 · 0 评论 -
Linux,数据库,计算机网络以及C++&Java面试问题补充
linux开机的步骤linux开机步骤运维的一些小题目 在/tmp/目录下创建test.txt文件,内容为: Hello,World! ,用一个命令写出来: echo “Hello,World!” > /tmp/test.txt 用vi命令编辑test.txt,如何跳转到末行,首行,行首、行末,如何在光标行下一行插入,如何复制5行,删除10行,查找jingfeng的字符、把jin原创 2016-08-18 16:11:44 · 5780 阅读 · 1 评论 -
安装Ubuntu 14.04后要做的事
1.删除libreofficesudo apt-get remove libreoffice-common 2.删除Amazon的链接sudo apt-get remove unity-webapps-common 3.删掉基本不用的自带软件sudo apt-get remove thunderbird totem rhythmbox empathy braser原创 2016-02-24 20:43:49 · 2037 阅读 · 0 评论 -
关于线程
由于同一进程的多个线程共享同一地址空间,因此Text Segment、Data Segment都是共享的,如果定义一个函数,在各线程中都可以调用,如果定义一个全局变量,在各线程中都可以访问到,除此之外,各线程还共享以下进程资源和环境:文件描述符表每种信号的处理方式( SIG_IGN 、 SIG_DFL 或者自定义的信号处理函数)当前工作目录用户id和组id 当然,线程也有起独特的组成部分原创 2016-01-15 14:53:01 · 299 阅读 · 0 评论 -
关于进程间IPC
管道:由pipe函数可以创建管道:#include int pipe(int filedes[2]);它有一个读端一个写端,然后通过 filedes 参数传出给用户程序两个文件描述符, filedes[0] 指向管道的读端, filedes[1] 指向管道的写端(很好记,就像0是标准输入1是标准输出一样)。所以管道在用户程序看起来就像一个打开的文件,通过 read(filedes[0])原创 2016-01-15 13:48:12 · 250 阅读 · 0 评论 -
关于进程
fork还是先从一个例子说起:#include #include #include #include int main(){ pid_t pid; char * msg; int n; pid = fork(); if(pid < 0){ perror("fork failed!\n"); exit(1);原创 2016-01-15 12:44:05 · 619 阅读 · 0 评论 -
关于环境变量
系统中实际上存放值一个换进变量表的地址,environ 没有包含在任何头文件中,所以在使用时要用 extern 声明。使用如下所示:#includeint main(){ extern char ** environ; //全局的换进变量表的地址 int i; for(i = 0; environ[i] != NULL; ++i) printf("%原创 2016-01-15 11:01:17 · 410 阅读 · 0 评论 -
GDB学习:1
首先函数实例如下所示:#include int add_range(int low, int high){ int i, sum; for (i = low; i <= high; i++) sum = sum + i; return sum;}int main(void){ int result[100]; result[0]原创 2016-01-13 17:46:38 · 335 阅读 · 0 评论 -
学会使用makefile:4
这里主要介绍一下如何处理编译文件以来的问题:main.o: main.h stack.h maze.hstack.o: stack.h main.hmaze.o: maze.h main.h 可见上面几个文件都依赖与几个头文件,实际上自己一个一个动手去写会比较麻烦,而且还容易弄错。可以用 gcc 的 -M 选项自动生成目标文件和源文件的依赖关系。如果像去除对系统库文件的以来关系,可以去使用原创 2016-01-12 17:07:01 · 327 阅读 · 0 评论 -
关于SOCKET编程
TCP/IP协议规定,网络数据流应采用大端字节序,即低地址高字节。例如UDP段格式,地址0-1是16位的源端口号,如果这个端口号是1000(0x3e8),则地址0是0x03,地址1是0xe8,也就是先发0x03,再发0xe8,这16位在发送主机的缓冲区中也应该是低地址存0x03,高地址存0xe8。但是,如果发送主机是小端字节序的,这16位被解释成0xe803,而不是1000。因此,发送主机把100原创 2016-01-18 16:37:26 · 306 阅读 · 0 评论 -
关于TCP/IP:下
UDP段的格式如下所示:下面举一个例子来分析一下:以太网首部0000: 00 05 5d 67 d0 b1 00 05 5d 61 58 a8 08 00IP首部0000:45 000010: 00 53 93 25 00 00 80 11 25 ec c0 a8 00 37 c0 a80020: 00 01UDP首部0020:05 d4 00 45 00 3f原创 2016-01-17 23:01:40 · 351 阅读 · 0 评论 -
关于TCP/IP
关于TCP/IP的几个层次,如下所示:这其中各个层次的数据包的封装如下所示:数据包到达之后由协议栈到达各层的过程如此啊所示:着重要注意一下的就是以太网的帧格式问题:其中的类型字段,主要制订了IP数据报,ARP,RARP 3中类型。源地址及目的地址指的是网卡的硬件地址,长度为6个Byte。以太网帧中的数据长度规定最小46字节,最大1500字节,AR原创 2016-01-17 11:00:17 · 678 阅读 · 0 评论 -
git,vim,gdb常用的命令小结
gitgit status 查看当前状态 git commit 提交 git branch -a 查看所有的分支git commit -am "init" 提交并且加注释 git push origin master 将文件给推到服务器上 git branch -D master develop 删除本地库developgit merge origin/dev 将分支dev与当前分支进行原创 2016-08-21 19:45:09 · 514 阅读 · 0 评论