Linux

Linux下exit()和_exit()的区别和联系

exit() 和 _exit()函数都可以用于结束进程,不过 _exit()调用之后会立即进入内核,而exit()函数会先执行一些清理之后才会进入内核。 从实现上看,exit是调用的 _exit进入内核的。 至于想知道详细的区别,可以看...

5种IO模型

概念理解 在编程的时候,我们经常谈到:同步(synchronous)、异步(asynchronous)、阻塞(blocking)、非阻塞(noblocking) 同步(synchronous):就是需要完成某个操作时,在没有完成之前我们会一直等待,直...

getopt和getopt_long函数解析命令行参数

在Linux中编程时,经常需要解析命令行的参数设置,比如解析ps -aux的参数列表,之前一直不知道Linux中有专门解析命令行参数的库函数(其实这么常用的东西怎么会没有专门的解析函数,应该早点百度一下的),在看we...

《Unix环境高级编程》记录锁

记录锁的功能是:当一个进程正在读或者修改文件的某一个部分时,它可以阻止其他进程修改同一文件区。记录锁其实是字节范围锁,因为它锁定的只是文件中的一个区域,也可能是整个文件。 1.fcntl记录锁 SVR3通过fc...

fork对行缓冲区的影响

在看《Unix环境高级编程》的时候,发现了fork对行缓冲区有一个需要注意的点,然后google了一下,发现这还是一道经典的面试题,发现一篇写得很不错的博文,我就直接转载了,原文传送门. 题目:请问下面的程序一...

Linux进程间通信之管道(pipe)

管道(pipe) 管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信; 实现机制: 管道是由内核管理的一个缓冲区,相当于我...

Linux多线程初体验

直接上代码 #include "pthread.h" //线程库,线程不是通过内核实现的 #include "stdio.h" #include "stdlib.h" #include "unistd.h" void* thread_func(void *arg){ int *val = (int*)arg; ...