Unix编程学习
Vector_PX
这个作者很懒,什么都没留下…
展开
-
Unix 进程终止
C语言程序总是由main函数开始执行,main函数原型为int main (int argc, char* argv[]);第一个参数是指参数个数,而第二个参数是多个字符串组成的数组。正常的进程终止方式main函数执行完毕调用exit()函数调用_exit()或者_Exit()函数最后一个线程从其启动例程返回在最后一个线程中调用pthread_exit()异常终止的方式调用a...原创 2020-03-02 20:11:22 · 367 阅读 · 0 评论 -
I/O模型比较
I/O复用适用于很多网络通信中,有以下适用场景:当用户处理多个描述符,在socket通信中,服务器accept函数等待用户完成TCP三次握手,在未完成队列中处理监听套接字和在服务器在键入数据准备发送给客户端时,例如用fgets函数进行阻塞等待输入完成,这两种情况,不能阻塞在特定的描述符上,否则可能会引起软中断而终止程序。单个服务器处理多个已连接套接字,就应该使用I/O复用让它成为迭代服务器处...原创 2020-01-07 22:14:59 · 213 阅读 · 0 评论 -
主机字节序与网络字节序(大小端)
在网络编程中,分为主机字节序和网络字节序。字节序分为大端和小端问题。网络字节序约定以大端为主,而主机就没有这样的约定,在Windows、Linux、Mac等主机上可能就是大小端的其中一种。例如有这样一个十六进制数字0x12345678,它占了4个字节,每个字节8位,两个16进制占8位(一个16进制为24 ,两个16进制为28 )。这个高字节位是最让人迷惑的地方,比如上面这个数,高字节位就是挨着0...原创 2019-12-25 12:00:33 · 736 阅读 · 0 评论 -
open()与openat()区别
从Linux2.6.16开始,引用了openat函数。主要解决两个问题:让线程可以使用相对路径名打开目录中的文件,不再是只能打开当前目录中的文件。同一进程中的所有线程共享当前目录,很难让同一进程中的线程工作在不同目录。避免time-of-check-to-time-of-use(TOCTTOU)错误。如果有两个基于文件的函数调用,并其中一个依赖另一个的结果,这个程序是脆弱的。这两个调用都不是...原创 2019-11-19 11:40:54 · 2587 阅读 · 0 评论 -
fork()函数
在学习Unix环境编程和Unix网络编程中,都遇到了fork()函数,于是想写一篇文章来说明一下自己的感悟,方便以后查吧。如果有错误的地方,还需要大佬们多多指点。示例采用Unix环境编程上1-7的例子#include "apue.h"#include <sys/wait.h>int main(void){ char buf[MAXLINE]; pid_t ...原创 2019-11-14 14:36:03 · 187 阅读 · 0 评论