
Linux系统编程
CoderZk
Keep Fighting Stay Focus
展开
-
Linux系统编程文件I/O部分总结
文件I/O C标准函数和系统函数的区别 I/O缓冲区 每一个FILE 文件流都有一个缓冲区buffer, 默认大小8192字节 C标准库函数是带I/O缓冲区的函数 LinuxAPI不带缓冲区 Linux的read write 是非缓冲io,c标准库里的fread fwrite printf是缓冲io,**非缓冲io每次操作都要与内核交互**,缓冲io为了效率,在`用户态`有缓冲区。所以write会直接输出,printf不直接输出。所以C语言标准函数效率更高.原创 2020-02-09 19:35:13 · 357 阅读 · 0 评论 -
生产者消费者, 哲学家问题, 线程池
哲学家问题 有五个哲学家绕着圆桌坐,每个哲学家面前有一盘面,两人之间有一支筷子,这样每个哲学家左右各有一支筷子。哲学家有2个状态,思考或者拿起筷子吃饭。如果哲学家拿到一只筷子,不能吃饭,直到拿到2只才能吃饭,并且一次只能拿起身边的一支筷子。一旦拿起便不会放下筷子直到把饭吃完,此时才把这双筷子放回原处。如果,很不幸地,每个哲学家拿起他或她左边的筷子,那么就没有人可以吃到饭了。 哲学家进餐问题是一个多线程运用的经典例子,涉及到线程同步/互斥,临界区访问问题以及死锁问题。 可能导致的死锁问题: 如果5个哲学家都去原创 2020-05-29 12:51:12 · 388 阅读 · 0 评论 -
C语言和LinuxC的一些问题(进程线程)
1. 阅读下面代码段,回答问题 以下代码段存在问题, 请在不修改结构体定义,不减少功能的前提下对此对此代码中存在的问题进行修改并说明修改原因。 修改正确后,写出输出结果并说明原因 将注释加入程序, 能正确运行吗, 如果能, 输出结果是什么, 并说明原因 sizeof(A)的结果是什么,为什么,再定义一个 int 类型的 t3, 定义的位置影响结果吗,说明理由。 typedef struct tag_unimportant { char *t2; int t1; } A; void func(A *a原创 2020-07-28 16:30:16 · 233 阅读 · 2 评论