首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏bit哲学院

    strerror 函数

    参考链接: C++ strerror() 收藏      75     23  strerror编辑    本词条缺少   名片图,补充相关内容使词条更完整,还能快速升级,赶紧来   编辑吧!       *)   目录      1函数名      2函数作用      3头文件      4函数原型      5举例    1函数名编辑     strerror, _strerror, _wcserror The same message is    * created using perror, strerror, and _strerror.    */    #include <fcntl.h>     says open failed: %s\n",    strerror( errno ) ); // C4996    printf( _strerror( "_strerror says open failed" ) ); // C4996    // Note: strerror and _strerror are deprecated; consider    // using strerror_s

    1K10发布于 2021-02-16
  • 来自专栏蓝天

    strerror线程安全分析

    strerror线程安全分析.pdf strerror是否线程安全了? 答案是NO,但它有个线程安全的版本:strerror_r。 借助Linux的man,即可看到详情: #include char *strerror(int errnum); int strerror_r(int errnum, char *buf, size_t 那么,在多线程程序中,什么情况下使用strerror是绝对安全的了?如果参数errnum是一个已知的errno,则使用strerror是绝对安全的,也就是会返回期待的字符串,而不会出现乱码。 对比strerror源码,是因为strerror会在下述直接返回: if (__builtin_expect (ret ! , strerror_r) libc_hidden_def (__strerror_r)

    1.6K30发布于 2018-08-10
  • 来自专栏蓝天

    Linux下的strerror是否线程安全?

    下列是glibc-2.14中的源代码: char * strerror (errnum) int errnum; {   char *ret = __strerror_r (errnum, buf, 1024); } man strerror即可看到相关说明,strerror_r是线程安全的,但不带_r的strerror是非线程安全的。 大多数凭空return非const字符串的都不是线程安全的,而strerror大部分系统认识的errno都是返回const字符串,所以大部分时候都是安全的。 或者干脆 #define strerror(x) strerror_r((x),0,0),这个#define要加-D_GNU_SOURCE编译。 可以在多线程中尽情使用strerror,但最好同时记录errno,万一乱字符串,还可通过errno取得正确的。

    1.5K30发布于 2019-03-14
  • 来自专栏跟我一起学编程

    带你搞清楚strtok函数和strerror函数的使用!

    今天我们更新了strtok和strerror函数使用的内容, 欢迎大家关注点赞收藏⭐️留言 一、strtok函数的使用 char * strtok ( char * str, const 接下来就会打印出我们想要的效果; 二、strerror函数的使用 char* strerror( int errnum ); 我们先来看一下这个字符串函数的作用: strerror函数可以把参数部分错误码对应的错误信息的字符串地址返回来 strerror函数就可以将错误对应的错误信息字符串的地址返回。 下面我们来看一串代码: int main() { for (int i = 0; i <= 10; i++) { printf("%d: %s\n", i, strerror(i)); } 总结: 总的来说,strtok函数和strerror函数都是在C语言中常用的字符串处理函数。strtok函数用于字符串的分割,而strerror函数用于获取错误信息字符串。

    34610编辑于 2024-03-21
  • 来自专栏机器和智能

    【Linux系统调用API】七、errno()、strerror()、dup()、dup2()

    2. strerror()函数 包含头文件 #include <string.h> 函数原型 char *strerror(int errnum); 函数功能 可以打印errno对应的详细错误信息。 The strerror() function returns a pointer to a string that describes the error code passed in the must not be modified by the application, but may be modified by a subsequent call to perror(3) or strerror 函数参数 errnum:错误编号 函数返回值 The strerror() functions return the appropriate error description string, or

    55810编辑于 2024-08-08
  • 来自专栏走在努力路上的自己

    深入理解字符串函数(strstr、strtok、strerror)(二)

    strerror 函数的使用​ char * strerror ( int errnum ); strerror函数可以把参数部分错误码对应的错误信息的字符串地址返回来。​ strerror函数就可以将错误对应的错误信息字符串的地址返回。 这是打印0~9错误码的代码: int main() { int i = 0; for (i = 0; i < 10; i++) { printf("%d:%s\n", i, strerror(

    1.6K10编辑于 2024-01-26
  • 来自专栏C语言学习专栏

    (21)从strerror到strtok:解码C语言字符函数的“生存指南2”

    错误信息报告 1.1 strerror 标准格式: char * strerror ( int errnum ); 功能: 获得指向错误信息的地址 C语言的库函数在运行的时候,如果发生错误,就会将错误存在一个变量中 (errno)); //errno: Last error number return 0; } 示例二 int main() { printf("%s\n", strerror(0)); printf("%s\n", strerror(1)); printf("%s\n", strerror(2)); printf("%s\n", strerror(3)); printf("% s\n", strerror(4)); printf("%s\n", strerror(5)); return 0; } #include<errno.h> int main() { //打开文件 FILE* pf = fopen("test.txt", "r"); if (pf == NULL) { printf("%s\n",strerror(errno)); //perror

    22610编辑于 2025-02-28
  • 来自专栏编程学习

    C语言——字符函数和字符串函数(三)【strtok,strerror,perror】

    = NULL 二,strerror的使用 头文件:<errno.h> strerror是一个传入错误码作为参数,返回参数部分错误码对应的错误信息的字符串地址的函数 先简单了解什么是错误码: C语言程序启动的时候 fopen("nonexistent_file.txt", "r"); if (file == NULL) { printf("Error opening file: %s\n", strerror 我们使用strerror函数就可以得到错误码对应的错误信息的地址,然后打印出来。

    85010编辑于 2024-03-19
  • 来自专栏学习C/++

    【C语言】超详解strncpy&&strncat&&strncmp&&strerror&&perror的使⽤和模拟实现

    前言 本小节,阿森继续和你一起学习5个字符串函数:strncpy,strcnat,strncmp的使用和两种模拟实现方法,他们和strcpy等函数比较多了一个n ,实现方法有很大区别,还有strerror 函数原型如下: char *strerror(int errnum); errnum: 错误码号,通常是系统调用或库函数返回的错误号。 strerror函数接受一个整型参数errnum,表示错误码。它会返回一个指向错误信息字符串的指针。 当我们在使⽤标准库中的函数的时候发⽣了某种错误,就会讲对应 的错误码,存放在errno中 以每⼀个错误码都是有对应的错误信息的 strerror函数返回的是一个静态字符串指针,不需要手动释放内存。 它的功能与strerror函数类似,但打印方式不同。 perror函数原型: void perror(const char *s); s: 可选的错误前缀信息。

    86110编辑于 2024-02-29
  • 来自专栏Linux之越战越勇

    C语言进阶(九) - 字符与字符串函数 - 4 - strstr()函数、strtok()函数、strerror()函数

    前言 主要介绍字符串相关函数中的strstr()函数、strtok()函数、strerror()函数。 printf("%s\n", strtok(NULL, str3)); printf("%s\n", strtok(NULL, str3)); return 0; } 运行结果: ---- 3. strerror ()函数 3.1 strerror()函数介绍 char* strerror (int errnum); 点击转到cplusplus.com官网 - strerror 所需头文件为<string.h 调用strerror函数时就可以传入errno。 = fopen ("hello,txt","r"); if (pFile == NULL) printf ("Error opening file unexist.ent: %s\n",strerror

    1.2K10编辑于 2023-04-27
  • 来自专栏ljw

    C/C++错误信息

    2. strerror() **strerror()**:strerror() 函数用于将 errno 错误代码转换为可读的字符串,返回与 errno 对应的错误消息的指针。 () **strerror_r()**:strerror_r() 是线程安全的 strerror() 版本,它将错误信息写入传入的缓冲区中。 由于 strerror() 不是线程安全的(它使用静态缓冲区),所以在多线程程序中推荐使用 strerror_r()。 **strerror()**:适用于在多个地方需要引用或自定义错误消息输出的场景,尤其在日志记录和调试时很有用。 总结 C/C++ 提供了一系列强大的错误处理机制,包括全局变量 errno 和函数 perror()、strerror() 等来输出和捕获错误信息。

    54510编辑于 2025-03-22
  • 来自专栏全栈程序员必看

    sendfile函數的使用[通俗易懂]

    sockfd; if ((sockfd = socket(AF_INET,SOCK_STREAM,0)) < 0) { printf("socket error: %s\n",strerror return -1; } if (listen(sockfd,LISTENQ) < 0) { printf("listen error: %s\n",strerror (errno == EINTR) { continue; } printf("accept error: %s\n",strerror = file_stat.st_size) { work = false; printf("sendfile error: %s\n",strerror = strlen(buf)) { close(connfd); printf("write error: %s\n",strerror(errno

    70830编辑于 2022-09-05
  • 来自专栏ccf19881030的博客

    Ubuntu12.04下pulseaudio的安装以及API使用

    int fd; if ((fd = open(argv[1], O_RDONLY)) < 0) { fprintf(stderr, __FILE__": open() failed: %s\n", strerror ; goto finish; } if (dup2(fd, STDIN_FILENO) < 0) { fprintf(stderr, __FILE__": dup2() failed: %s\n", strerror &error)) == (pa_usec_t) -1) { fprintf(stderr, __FILE__": pa_simple_get_latency() failed: %s\n", pa_strerror sizeof(buf))) <= 0) { if (r == 0) /* EOF */ break; fprintf(stderr, __FILE__": read() failed: %s\n", strerror = sizeof(buf)) { fprintf(stderr, __FILE__": write() failed: %s\n", strerror(errno)); goto finish; } }

    2.6K20发布于 2019-04-23
  • 来自专栏网站知识

    如何在Python中删除(删除)文件和目录

    file.txt' try: os.remove(file_path) except OSError as e: print("Error: %s : %s" % (file_path, e.strerror files: try: f.unlink() except OSError as e: print("Error: %s : %s" % (f, e.strerror files: try: os.remove(f) except OSError as e: print("Error: %s : %s" % (f, e.strerror .txt'): try: f.unlink() except OSError as e: print("Error: %s : %s" % (f, e.strerror tmp/img') try: dir_path.rmdir() except OSError as e: print("Error: %s : %s" % (dir_path, e.strerror

    17K30发布于 2021-08-10
  • 来自专栏C++技术干货

    【TCP服务器的演变过程】编写第一个TCP服务器:实现一对一的连接通信

    2.7、strerror()函数strerror()函数返回一个指向字符串的指针,该字符串描述参数errnum中传递的错误代码,可能使用当前语言环境的LC_MESSAGES部分来选择适当的语言。 应用程序不能修改此字符串,但可以通过随后调用strerror()或strerror_l()来修改。任何其他库函数,包括perror(),都不会修改此字符串。 函数原型:#include <string.h> char *strerror(int errnum); int strerror_r(int errnum, char *buf, size_t buflen ); /* XSI-compliant */ char *strerror_r(int errnum, char *buf, size_t buflen); /* GNU-specific */ char *strerror_l(int errnum, locale_t locale);三、实现步骤一对一服务器设计:(1)创建socket。

    48200编辑于 2025-05-13
  • 来自专栏嵌入式项目开发

    Linux下使用alsa-lib库完成音频开发: 实现放音和录音(从声卡获取PCM数据保存、向声卡写PCM数据输出)

    capture_handle, argv[1],SND_PCM_STREAM_CAPTURE,0))<0) { printf("无法打开音频设备: %s (%s)\n", argv[1],snd_strerror 并判断是否分配成功*/ if((err = snd_pcm_hw_params_malloc(&hw_params)) < 0) { printf("无法分配硬件参数结构 (%s)\n",snd_strerror if((err=snd_pcm_hw_params_any(capture_handle,hw_params)) < 0) { printf("无法初始化硬件参数结构 (%s)\n", snd_strerror /*准备音频接口,并判断是否准备好*/ if((err=snd_pcm_prepare(capture_handle))<0) { printf("无法使用音频接口 (%s)\n",snd_strerror =buffer_frames) { printf("从音频接口读取失败(%s)\n",snd_strerror(err)); exit(1); } /*写数据到文件:

    10.7K20编辑于 2022-01-12
  • 来自专栏爬虫资料

    如何在C程序中使用libcurl库下载网页内容

    = CURLE_OK) { fprintf(stderr, "初始化失败: %s\n", curl_easy_strerror(code)); return 1; } // 获取 curl = CURLE_OK) { fprintf(stderr, "设置 URL 失败: %s\n", curl_easy_strerror(code)); curl_easy_cleanup(curl = CURLE_OK) { fprintf(stderr, "设置代理类型失败: %s\n", curl_easy_strerror(code)); curl_easy_cleanup(curl = CURLE_OK) { fprintf(stderr, "设置代理认证失败: %s\n", curl_easy_strerror(code)); curl_easy_cleanup(curl = CURLE_OK) { fprintf(stderr, "设置 Cookie 失败: %s\n", curl_easy_strerror(code)); curl_easy_cleanup

    1.4K20编辑于 2023-10-17
  • 来自专栏嵌入式项目开发

    嵌入式Linux下音频开发: alsa-lib实现声音数据捕获保存与播放

    if((err=snd_pcm_hw_params_any(capture_handle,hw_params)) < 0) { printf("无法初始化硬件参数结构 (%s)\n", snd_strerror snd_pcm_hw_params_set_channels(capture_handle, hw_params,2)) < 0) { printf("无法设置声道数(%s)\n",snd_strerror /*准备音频接口,并判断是否准备好*/ if((err=snd_pcm_prepare(capture_handle))<0) { printf("无法使用音频接口 (%s)\n",snd_strerror =buffer_frames) { printf("从音频接口读取失败(%s)\n",snd_strerror(err)); exit(1); } /*写数据到文件*/ =buffer_frames) { printf("从音频接口读取失败(%s)\n",snd_strerror(err)); exit(1); } /*写数据到文件:

    6.9K30编辑于 2022-01-12
  • 来自专栏北溟有鱼QAQ

    TCP 的连接建立与关闭状态及数据传输通信过程 [含有 PHP socket API 测试实验代码]

    socket_set_option($sock, SOL_SOCKET, SO_REUSEADDR, 1)) { echo 'Unable to set option on socket: '. socket_strerror socket_set_option($sock, SOL_SOCKET, SO_REUSEPORT, 1)) { echo 'Unable to set option on socket: '. socket_strerror socket_bind($sock, $address, $port) === false) { echo "socket_bind() failed: reason: " . socket_strerror LISTEN状态 if (socket_listen($sock, 5) === false) { echo "socket_listen() failed: reason: " . socket_strerror msgsock = socket_accept($sock)) === false) { echo "socket_accept() failed: reason: " . socket_strerror

    98110发布于 2020-06-19
  • 来自专栏程序员

    Socket详解及C++应用示例

    AF_INET, SOCK_STREAM, 0); if (server_fd == -1) { std::cerr << "Socket creation failed: " << strerror server_fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt))) { std::cerr << "Setsockopt failed: " << strerror server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) { std::cerr << "Bind failed: " << strerror 监听连接请求(最大等待队列长度为3) if (listen(server_fd, 3) < 0) { std::cerr << "Listen failed: " << strerror struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) { std::cerr << "Connection failed: " << strerror

    1.7K12编辑于 2025-08-11
领券