errno

【转】_beginthread()与CreateThread()的区别

南笙酒味 提交于 2020-03-23 02:22:51
3 月,跳不动了?>>> 一个时运行时库函数,一个时WIN32 的库函数。 CreateThread、_beginthread和_beginthreadex都是用来启动线程的,但大家看到oldworm没有提供_beginthread的方式,原因简单,_beginthread是_beginthreadex的功能子集,虽然_beginthread内部是调用_beginthreadex但他屏蔽了象安全特性这样的功能,所以_beginthread与CreateThread不是同等级别,_beginthreadex和CreateThread在功能上完全可替代,我们就来比较一下_beginthreadex与CreateThread! CRT的函数库在线程出现之前就已经存在,所以原有的CRT不能真正支持线程,这导致我们在编程的时候有了CRT库的选择,在MSDN中查阅CRT的函数时都有: Libraries LIBC.LIB Single thread static library, retail version LIBCMT.LIB Multithread static library, retail version MSVCRT.LIB Import library for MSVCRT.DLL, retail version 这样的提示! 对于线程的支持是后来的事!

信号量 - semaphore

房东的猫 提交于 2020-03-22 17:12:27
一. POSIX - 信号量 #include <semaphore.h> sem_t sem; ///< 信号量 信号量,分为有名信号量 和无名信号量。 有名信号量由sem_open/sem_close/sem_unlink创建/关闭/销毁,用于进程间通信。 无名信号量由sem_init/sem_destroy创建/销毁,用于线程间通信。 1. 信号量初始化 /*********************************************************** * @param[sem] 非命名信号量,只能被sem_destroy()销毁, * @param[pshared] 非0表示进程间通信信号量,但是Linux系统暂未实现这一功能(实现方式为共享内存),0表示线程间通信信号量。 * @param[value] 信号量初始化值 * @return 成功返回0,失败返回-1及设置错误码errno *//********************************************************/ int sem_init(sem_t * sem, int pshared, unsigned vlaue); /*********************************************************** *

Python3_Except语法的不同之处

一笑奈何 提交于 2020-03-17 09:12:21
Python3_Except语法的不同之处 在进行异常处理时,as 是把异常对象赋值到 as 后的变量中 在python2中是这样写的: except IOError , (errno, strerror): 但是python3中,已经不允许这样写了,要写成 except IOError as (errno, strerror): 来源: CSDN 作者: 一分的夏 链接: https://blog.csdn.net/qq_39626465/article/details/104865087

基本C语言的HELLO/HI聊天程序

风格不统一 提交于 2020-03-14 11:00:02
什么是 socket? socket 的原意是“插座”,在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。 我们把插头插到插座上就能从电网获得电力供应,同样,为了与远程计算机进行数据传输,需要连接到因特网,而 socket 就是用来连接到因特网的工具。 socket 的典型应用就是 Web 服务器和浏览器:浏览器获取用户输入的 URL,向服务器发起请求,服务器分析接收到的 URL,将对应的网页内容返回给浏览器,浏览器再经过解析和渲染,就将文字、图片、视频等元素呈现给用户。 学习 socket,也就是学习计算机之间如何通信,并编写出实用的程序。 UNIX/ Linux 中的 socket 是什么? 在 UNIX/Linux 系统中,为了统一对各种硬件的操作,简化接口,不同的硬件设备也都被看成一个文件。对这些文件的操作,等同于对磁盘上普通文件的操作。 你也许听很多高手说过,UNIX/Linux 中的一切都是文件!那个家伙说的没错。 为了表示和区分已经打开的文件,UNIX/Linux 会给每个文件分配一个 ID,这个 ID 就是一个整数,被称为文件描述符(File Descriptor)。例如: 通常用 0 来表示标准输入文件(stdin)

tensorboard出现OSError: [Errno 22] Invalid argument问题解决

半城伤御伤魂 提交于 2020-03-08 13:26:08
tensorboard出现OSError: [Errno 22] Invalid argument问题解决 问题描述 使用tensorboard的时候提示错误: W0308 10:12:12.621754 13516 plugin_event_accumulator.py:557] Detected out of order event.step likely caused by a TensorFlow restart. Purging 428 expired tensor events from Tensorboard display between the previous step: 3997 (timestamp: 1583631015.1091805) and current step: 3812 (timestamp: 1583631855.272426). for k in _TENSORBOARD_INFO_FIELDS File "d:\anaconda\lib\site-packages\tensorboard\manager.py", line 129, in <dictcomp> for k in _TENSORBOARD_INFO_FIELDS File "d:\anaconda\lib\site-packages\tensorboard\manager

Linux TCP server系列(4)-浅谈listen与大并发TCP连接

牧云@^-^@ 提交于 2020-03-06 04:39:37
背景: 服务器在调用 listen 和 accept 后,就会阻塞在 accept 函数上, accpet 函数返回后循环调用 accept 函数等待客户的 TCP 连接。如果这时候又大量的用户并发发起 connect 连接,那么在 listen 有队列上限 ( 最大可接受 TCP 的连接数 ) 的情况下,有多少个 connect 会成功了。试验证明,当连接数远远高于 listen 的可连接数上限时,客户端的大部分 TCP 请求会被抛弃,只有当 listen 监听队列空闲或者放弃某个连接时,才可以接收新的连接,那么我们应该如何来避免这种情况出现? 分析: (一)客户端 客户端运行初期完成所设定的一定量的 socket 创建和相应的处理线程的创建 ,然后使用 条件变量来完成线程同步 ,直到最后一个线程创建完成,才 向所有线程发出广播通知,让所有线程并发调用 connect ,连接成功则关闭连接,失败则返回,如下代码所示。 socket 创建和线程创建: int testCount=300; // 并发用户数 /* 每个进程需要自己独立的栈空间, linux 下默认栈大小是 10M ,在 32 位的机子上一个进程需要 4G 的内存空间,去掉自己的栈空间全局程序段空间,一般只有 3G 内存可以用,创建线程时就需要从这 3G 的空间中分配 10M 出来,所以最多可以分配 300 个线程

解决:OSError: [Errno 98] Address already in use

不羁岁月 提交于 2020-03-02 11:55:03
OSError: [Errno 98] Address already in use 错误是指端口被占用,未释放或者程序没有正常结束 解决办法: 1.更换端口 2.使用终端命令杀死进程(可以在PyCharm的Terminal中输入命令) lsof -i:5050 1 lsof -i:端口号 :可通过端口号来查找进程ID kill -9 pid 1 pid是指进程的ID号 ,kill -9 用来强制杀死进程 来源: CSDN 作者: 我是帅气的大叔 链接: https://blog.csdn.net/qq_25639637/article/details/104606432

【报错】yum -y 报错 [Errno 256] No more mirrors to try.

半城伤御伤魂 提交于 2020-02-29 19:19:23
使用 yum 安装软件时,出现 [Errno 256] No more mirrors to try. 系统:CentOS 7.5 情况:使用 yum 安装软件时,出现 [Errno 256] No more mirrors to try. 原因:不明,莫名其妙的 解决办法: yum clean all //清除缓存中的rpm头文件和包文件 yum makecache //将服务器的包信息下载到本地电脑缓存起来 yum -y update //升级所有包、软件和系统内核 报错详细信息如下: 来源: CSDN 作者: IT 酱 链接: https://blog.csdn.net/Iris_LDDDD/article/details/104577767

Head First C 第九章 进程与系统调用 出错处理

断了今生、忘了曾经 提交于 2020-02-29 02:47:55
Head First C 第九章 进程与系统调用 出错处理 大多数的系统调用以相同的方式出错 需求:想知道系统调用为什么会失败,因此所有的系统调用都遵循“失败黄金法则”。 尽可能的收拾残局 把errno变量设为错误码 返回-1 errno 变量是定义在 errno.h 中的全局变量,和它定义在一起的还有很多标准错误码。 EPERM=1 不允许操作 ENOENT=2 没有该文件或目录 ESRCH=3 没有该进程 使用strerror打印标准错误 #include <errno.h> #include <stdio.h> #include <string.h> #include <unistd.h> int main() { if (execl("ifconfig", "ifconfig", NULL) == -1) if (execlp("kryptonite", "kryptonite", NULL) == -1) { fprintf(stderr, "Can not run ipconfig:%s\n", strerror(errno)); return 1; } return 0; } 系统调用在出错时通常会返回-1,但不是绝对的 系统调用在出错的同时,将errno变量设为错误码。 来源: oschina 链接: https://my.oschina.net/u/2491285