Linux学习
文章平均质量分 51
taozi1234567
这个作者很懒,什么都没留下…
展开
-
Linux之TCP/IP
TCP/IPTCP/IP实际上是一起工作的通信协议家族,为网际数据通信提供通路。我们可将其大体分为3类:1)Internet 协议(ip)2)传输控制协议(TCP)&用户数据报文协议(UDP)3)处于TCP,UDP之上的一组协议专门开发的应用程序。 TELNET,文件传输协议FTP,域名服务(DNS),和简单的邮件传送协议(SMTP)等等。第一部分也称为网络层,包括ip原创 2013-11-15 21:07:16 · 418 阅读 · 0 评论 -
likely和unlikely宏
以下为这两个宏的一般定义:#define likely(x) __builtin_expect(!!(x), 1)#define unlikely(x) __builtin_expect(!!(x), 0)而__builtin_expect() 是 GCC (version >= 2.96)提供给程序员使用的,目的是将“分支转移”的信息提供给编译器,这样编译器可以对转载 2014-08-12 08:36:52 · 498 阅读 · 0 评论 -
Linux之进程组
每个进程除了有个进程id外,他还属于一个进程组。每个进程组可以有一个组长进程,组长进程的id就是进程组的id。只要进程组中有一个进程存在,则这个进程组就存在,和其组长进程是否终止无关。从进程组创建到进程组中最后一个进程离开为止称为进程组的生命周期。为什么用离开,而不是终止?因为最后一个进程可以选择离开该进程组到另一个进程组也可以选择终止。进程可以通过int setpgid(pid_原创 2013-11-25 21:42:56 · 414 阅读 · 0 评论 -
Linux之printf的缓冲区问题
printf的缓冲区问题在做linux有名管道问题时,想打印出read的数据printf("received data %s",buf);结果运行后server始终不能将获取的数据打印出来。以为是写数据的问题,跟踪了一下写入和读取都是成功的,后来想想有可能是缓冲区的原因然后手动刷新了一下缓冲区fflush(stdout);结果一切就正常了。现在总结一下缓冲区刷新的时机:原创 2013-11-10 19:16:28 · 826 阅读 · 0 评论 -
Linux之有名管道
Linux的有名管道 从linux中管道的创建过程我们可以看出,管道只可以在父子或者有血缘关系的进程中进行通信,因为其以无名文件的形式存在文件系统中。为了克服这个问题,Linux中发展了有名管道(FIFOS).有名管道以一种特殊的文件设备存在,这样它既有了管道的功能,同时又有了文件的特点,这样我们就可以通过像操作普通文件那样去操作管道,从而实现了非父子关系的进程间原创 2013-11-09 20:44:30 · 810 阅读 · 0 评论 -
Linux之vfork
vforkvfrok用于创建一个新进程,而新进程的目的是为了exec一个新程序。vfork和fork的区别是vfork它不会将父进程的地址空间复制一份到子进程。因为子进程会立即调用exec或exit,也就不会对这块地址读写了。而在子进程调用exec之前,其在父进程的空间中运行。另外一个区别是vfork保证子进程先运行,父进程在这段时间挂起,直到子进程调用了exec或exit,才会去原创 2013-11-20 21:29:43 · 613 阅读 · 0 评论 -
Linux之管道
1:什么是管道管道是将一个程序的输出和另外一个程序的输入连接起来的单向通道。当进程创建一个管道的时候,系统同时为进程创建了一对文件句柄,一个用来从管道中读取数据,一个用来向管道输出。如图:但是就目前来说都只是一个进程在对管道进行操作,这个是没有意义的。所以我们可以使用fork去创建子进程。大家都知道,子进程对于父进程打开的文件句柄是继承了的。也就是说子进程也同样原创 2013-11-06 20:48:09 · 393 阅读 · 0 评论 -
UNIX之fork进程copy
某些平台提供了一些fork函数的变体,1)linux 2.4.22提供了另外一种创建新进程的函数-clone(2)系统调用,这是一种fork的泛型,它可以控制父子进程控制哪些2)FReeBSD 5.2.1提供了rfork2的系统调用,类似于linux的clone3)solaris 9 提供了两个线程库:一个用于posix线程,一个用于solaris线程。在这两个线程库中fork会略原创 2013-11-19 20:59:46 · 675 阅读 · 0 评论 -
Linux之进程间发送信号
一个进程可以通过对signal来调用来处理其他进程发送的信号。同样一个进程也可以向其他进程发送信号。发送信号是通过kill函数来实现的。int kill(pid_t pid, int sig);PID:指明了信号发送对象。它可以是某个进程的进程标示符,也可以是以下的值:pid=0:说明signal是发送给当前进程所在进程组的所有进程。pid=-1:说明signal按照进程标示符原创 2013-11-05 21:04:06 · 1022 阅读 · 0 评论 -
Linux进程
调用fork后,A进程和B进程的PC都指向下一个printf,也就是说,fork后子进程和父进程从相同的点开始执行代价。fork出来的子进程是父进程的副本,也就是说踏实copy了一份父进程,当然在子进程写数据之前,子进程一直是和父进程使用同样的资源,但是当子进程进行写数据的时候,子进程就会copy一份父进程的资源,然后进行数据的读写,这就是传说中的copy-on-write.2:进程之ex原创 2013-11-01 21:25:44 · 363 阅读 · 0 评论 -
Linux之进程环境
进程的环境使用全局的以NULL结尾的字符串集合。系统中规定的每个字符串的格式是name=something.linux中提供了environ指针来访问其环境内容。当然在使用之前应该去声明它:extern char** environ;见下面的例子:一个进程的初始环境是和用fork和ecec创建出来的环境相同的,当然如果你为新进程指定环境也是可以的,使用下面两个e原创 2013-11-03 20:51:18 · 413 阅读 · 0 评论 -
VIM简单使用
当你安装好一个编辑器后,你一定会想在其中输入点什么东西,然后看看这个编辑器是什么样子。但vim不是这样的,请按照下面的命令操作:启 动Vim后,vim在 Normal 模式下。让我们进入 Insert 模式,请按下键 i 。(陈皓注:你会看到vim左下角有一个–insert–字样,表示,你可以以插入的方式输入了)此时,你可以输入文本了,就像你用“记事本”一样。如果你想返回 Normal 模转载 2013-10-31 20:21:56 · 344 阅读 · 0 评论 -
Linux进程fork execu之数据和文件描述符的继承
1:fork,文件,数据 用fork创建的子进程几乎和父进程一样,子进程的变量基本保持了父进程中的值,因为其数据是父进程的copy,只是占用了不同的内存地址空间而已。另外父进程打开的文件,在子类的也被打开,子进程也支持这类文件描述符。而且子进程和父进程共享文件描述符,而且由于文件指针式保存在系统中而不是程序中的,所以如果子进程移动文件指针,其实也等同于 移动父进程的文件指针,所以建议父进原创 2013-11-03 14:59:17 · 914 阅读 · 0 评论 -
ubuntu 14.04 能进入ubuntu,进入win7 无法启动,光标闪烁问题解决
1.引用:menuentry "Microsoft Windows XP Professional" {insmod ntfsset root=(hd0,1)chainloader +1}复制到/etc/grub.d/40_custom文件中2.代码:sudo chmod -x /etc/grub.d/30_os-prober3.代码:sudo up原创 2014-08-12 08:55:21 · 528 阅读 · 0 评论