计算机基础
kph_Hajash
三年服务端(直播推拉流)经验、三年客户端(网络库基础组件)经验
展开
-
文件打开:open,出现 EACCES:permission denied
今天在 mac 上测试下载服务端的一个图片文件,发现之前能成功创建本地文件的代码,突然出现拒绝访问的错误,此时文件打开的代码如下:int fd = open("./test.jpg", O_RDWR|O_APPEND|O_CREAT);int errnum = errno;if(fd < 0) {LOG(ERROR) << "file ./test.jpg open failed, errno is: " << errnum << ", details:原创 2021-01-26 17:15:25 · 3586 阅读 · 0 评论 -
shell、UNIX、GNU、Posix、BSD、SVR 4 之间的关系梳理
在阅读专业书籍的时候,尤其是 Unix 高级环境编程系列,总是出现好几个专有名词,让人眼花缭乱,今天小编简单梳理了一下它们之间的关系。原创 2018-11-17 14:59:04 · 1049 阅读 · 0 评论 -
UDP 使用六点注意事项
1、客户端在第一次 sendto 时内核会选择一个临时 端口,他不会变,但出口 ip 可能每次都不同。2、服务器是多宿 ip 主机,接收到 udp 报文时,服务器在响应时源 ip 不一定是客户端报文的目的 ip。3、服务端未运行,客户端如何感知到错误, 事实上 ip 层可以感知到,但不会上报给客户端进程,除非客户端的 udp 套接字是连接的。4、connect 函数可以调用多次,且使用 co...原创 2018-12-23 18:16:49 · 1656 阅读 · 0 评论 -
UNIX 环境高级编程之带缓冲 I/O 与不带缓冲 I/O 的区别
1、I/OI/O 操作可根据是否带缓冲区来分类为带缓冲的 I/O 和不带缓冲区的 I/O ,后者就是标准 I/O。那么这两者有啥区别呢?不带缓冲其实就是应用程序直接使用系统调用。标准 I/O 是在系统调用上做了一层封装,替用户做了相关优化操作,从而减少应用程序的系统调用次数,从而达到一定的性能优化。比如需要写 100 字节数据到磁盘文件。内核的缓冲大小为 100 字节,假设用户不知道内...原创 2019-01-06 20:31:38 · 420 阅读 · 1 评论 -
UNIX 环境高级编程之出错处理
在 UNIX 系统中,系统调用出错通常会设置变量 errno 的值,以指示出错的具体类型,一般为负值,这些值通常对应一个描述性信息,可以通过 strerror( errno) 获取或者通过 perror 将错误信息输出到标准错误。在支持线程的系统环境中,同一进程的不同线程有各自的 errno,因此不用考虑它的一致性问题。errno 的使用需要注意两条规则:如果没有系统调用出错,那么 err...原创 2019-01-06 21:01:39 · 249 阅读 · 0 评论