首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

c++编程之perror()

参考链接: C++ perror() 定义函数          void perror(const char *s); perror ("open_port");   函数说明           perror...perror函数只是将你输入的一些信息和现在的errno所对应的错误一起输出。  和异常处理的区别           这里有一个疑问,c++已经有了异常处理,为什么还需要一个perror呢?...原因是,在linux很多操作中,尤其是系统调用,文件操作中,如果没有正常执行完毕,是不会报错的,只会返回一个表示错误的描述符或句柄。例如,非常典型的是mkdir,fopen,socket等函数。...那么我们发现函数没有成功运行,就需要perror函数调取函数没有成功运行的原因。 ...("Error: ");     }     return 0; } 在这段程序中,打开文件的函数没有正确执行,我们想知道为什么没有执行,是其他进程占用还是不存在,于是就调用perror函数产看。

85800
您找到你想要的搜索结果了吗?
是的
没有找到

Linux文件IO基础

Linux 文件 I/O(Input/Output)基础是 Linux 应用程序开发中的重要组成部分。在 Linux 系统中,文件 I/O 涉及到文件的读取和写入,以及文件描述符、系统调用等概念。...以下是 Linux 文件 I/O 的基础知识: 1. 文件描述符 在 Linux 中,每个打开的文件都与一个文件描述符相关联。文件描述符是一个非负整数,表示进程中打开文件的引用。...打开文件 要在 Linux 中进行文件 I/O,首先需要打开文件。open 系统调用用于打开或创建文件,并返回文件描述符。...通常,系统调用的返回值为 -1 表示发生了错误,此时可以使用全局变量 errno 获取错误码,并使用 perror 函数输出错误信息。...文件和目录操作 Linux 提供了一系列的文件和目录操作函数,可以用于获取和修改文件和目录的属性。

10910

Linux 的进程间通信:管道

微博ID:orroz 微信公众号:Linux系统技术 前言 管道是UNIX环境中历史最悠久的进程间通信方式。本文主要说明在Linux环境上如何使用管道。...Linux系统直接把管道实现成了一种文件系统,借助VFS给应用程序提供操作接口。 虽然实现形态上是文件,但是管道本身并不占用磁盘或者其他外部存储的空间。在Linux的实现上,它占用的是内存空间。...所以,Linux上的管道就是一个操作方式为文件的内存缓冲区。 管道的分类和使用 Linux上的管道分两种类型: 匿名管道 命名管道 这两种管道也叫做有名或无名管道。...Linux系统无论对于命名管道和匿名管道,底层都用的是同一种文件系统的操作行为,这种文件系统叫pipefs。...在Linux 2.6.11之前,PIPESIZE和PIPEBUF实际上是一样的。

8.2K21

Linux 文件IO实例代码

简述 ---- Linux下的所有资源都被抽象为文件,所以对所有资源的访问都是以设备文件的形式访问,设备文件的操作主要包括:打开、关闭、读、写、控制、修改属性等。...其实对于一些复杂一点的设备,主要操作也是类似,比如摄像头,在linux下也是一个设备文件,打开之后,可以读取摄像头的参数,然后可以读取图像数据,读取到的图像数据可以编码后保存到文件中,这就是录像的过程,...再比如串口的操作,在Linux下,对于串口通信,也是设备文件的读写操作:打开设备文件--->配置参数(波特率、停止位、校验位等)--->读取/写入数据。...= 0){ if((count = read(fd1,buf,M)) == -1){ perror("read file1 error:");...return -1; } if((count = write(fd2,buf,count)) == -1){ perror("write error

1.1K40

Linux网络编程之使用TCP传输文件

原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb666/article/details/8976263,作者:gqb666 最近在写Linux网络方面的... 其中,server端先运行,client端与server端的端口号必须一致并且不能与已知端口冲突(例如8888即可) 下面将代码贴上:(使用UDP传输文件请参阅博文Linux...= 3) {           usage(argv[0]);       }   if ((fp = fopen(argv[2], "w")) == NULL) {           perror...           exit(0);       }   if ((sock_id = socket(AF_INET, SOCK_STREAM, 0)) < 0) {           perror...    fclose(fp);       close(sock_id);       printf("Send Finish\n");       return 0;   }   下转博文:Linux

2.6K10

高性能网络编程 - select、 poll 、epoll 、libevent

概述 Select(选择): Select 是一种传统的 I/O 多路复用机制,用于在类 Unix 操作系统(如 Linux)中同时管理多个文件描述符(如网络套接字或文件)。...监听 ret = listen(lfd, 100); if(ret == -1) { perror("listen"); exit(0);...} } close(lfd); return 0; } Epoll(事件轮询): Epoll(事件轮询)是一种较新且高效的 I/O 事件通知机制,主要用于 Linux...仅在Linux系统上可用。 缺点: 不具备跨平台兼容性,只能在Linux上使用。 相对于Select和Poll,编写代码可能稍微复杂一些。...如果需要处理大规模并发连接,特别是在Linux上,Epoll通常是最佳选择。对于跨平台开发,Libevent可以提供便利。

28781

Linux 的进程间通信:文件和文件锁

本文更加偏重的是Linux环境提供了多少种文件锁以及他们的区别是什么? flock和lockf 从底层的实现来说,Linux的文件锁主要有两种:flock和lockf。...从应用的角度来说,Linux内核虽然号称具备了强制锁的能力,但其对强制性锁的实现是不可靠的,建议大家还是不要在Linux下使用强制锁。...事实上,在我目前手头正在使用的Linux环境上,一个系统在mount -o mand分区的时候报错(archlinux kernel 4.5),而另一个系统虽然可以以强制锁方式mount上分区,但是功能实现却不完整...鉴于此,我们就不在此介绍如何在Linux环境中打开所谓的强制锁支持了。我们只需知道,在Linux环境下的应用程序,flock和lockf在是锁类型方面没有本质差别,他们都是建议锁,而非强制锁。...如果你喜欢本文,欢迎在微博上搜索“orroz”关注我,地址是:http://weibo.com/orroz 大家也可以在微信上搜索:Linux系统技术 关注我的公众号。

7.3K13

TCP网络编程中connect()、listen()和accept()三者之间的关系 ( 非常重要!!)

connect()函数 对于客户端的 connect() 函数,该函数的功能为客户端主动连接服务器,建立连接是通过三次握手,而这个连接的过程是由内核完成,不是这个函数完成的,这个函数的作用仅仅是通知 Linux...内核,让 Linux 内核自动完成 TCP 三次握手连接(三次握手详情,请看《浅谈 TCP 三次握手》),最后把连接的结果返回给这个函数的返回值(成功连接为0, 失败为-1)。...这里需要注意的是,listen()函数不会阻塞,它主要做的事情为,将该套接字和套接字对应的连接队列长度告诉 Linux 内核,然后,listen()函数就结束。...这样的话,当有一个客户端主动连接(connect()),Linux 内核就自动完成TCP 三次握手,将建立好的链接自动存储到队列中,如此重复。...但实际上Linux的并不是这样的!

2.7K30

Linux进程通信——共享存储

目前Linux对system V的共享内存方式支持的比较好。在高版本的Linux内核上,我们有更多的方式来完成共享存储。...嵌入式开发板搭载的低版本内核的Linux操作系统基本上都是不支持POSIX标准的内存共享的,只能使用system V的内存共享方式。system V是通过映射特殊文件系统shm中的文件实现内存共享的。...main() { int num = 7777777; int fd = open("/dev/zero",O_RDWR); if (-1 == fd) { perror...= mmap(0,sizeof(int),PROT_READ|PROT_WRITE,MAP_SHARED,fd,0); if (MAP_FAILED == p) { perror...Linux除了使用zero以外,它还提供了一种称为匿名映射的方式。这种方式需要在使用mmap的时候指定MAP——ANON标志,并将文件描述符设置为-1。更改上面的程序如下。

3.8K30
领券