日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用临时文件mkstemp和输出errno对应的错误描述信息strerror

發布時間:2023/12/9 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用临时文件mkstemp和输出errno对应的错误描述信息strerror 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/* <<高級Linux編程.pdf>> page24-25: temp_file.cmkstemp: 從一個文件名模板(結尾是:XXXXXX)生成臨時文件名,創建這個臨時文件,將模式設置為僅當前用戶可以訪問,并且以讀寫權限打開這個文件。mkstemp函數用其他字符替換這些X以得到一個不重復的文件名,函數返回已經打開的文件描述符。由mkstemp創建的臨時文件是不會被自動刪除的。如果這個臨時文件只是程序內部使用而不會移交給其他程序,在創建之后調用unlink是個不錯的主意。只有當所有指向該文件的描述符都被關閉的時候,它才會被文件系統真正刪除。 */#include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h>extern int errno; // 使用外部全局變量errnoint writeTempfile(char *buffer, size_t length) {char temp_filename[] = "/tmp/temp_file.XXXXXX"; // 這6個"x"必須要大寫,否則創建文件失敗(Error: Invalid argument)int fd = mkstemp(temp_filename);if(fd == -1){printf("Can't open tempfile [%s]\n", temp_filename);perror("mkstemp"); // perror: 也會顯示錯誤描述信息fprintf(stderr, "ErrorMessage: %s\n", strerror(errno)); // strerror: 顯示errno對應的錯誤描述信息}else{printf("fd = %d\n", fd);unlink(temp_filename);write(fd, &length, sizeof(length));write(fd, buffer, length);}return fd; }char* readTempfile(int temp_file, size_t *length) {char *buffer;int fd = temp_file;lseek(fd, 0, SEEK_SET);read(fd, length, sizeof(*length));buffer = malloc(*length);if(buffer != NULL)read(fd, buffer, *length);close(fd);return buffer; }int main(int argc, char *argv[]) {char str[] = "What can I do for you?\n你知道我在干什么嗎?\n";int len = strlen(str);int fd;if((fd = writeTempfile(str, len)) != -1){char *buf = readTempfile(fd, &len);if(buf != NULL)printf("buf = [%s]\t%d\n", buf, len);elseprintf("buf == NULL\n");}return 0; }


運行結果:

[zcm@t #128]$make gcc -g -c -o a.o a.c gcc -g -o a a.o [zcm@t #129]$./a fd = 3 buf = [What can I do for you? 你知道我在干什么嗎? ] 54 [zcm@t #130]$


?

總結

以上是生活随笔為你收集整理的使用临时文件mkstemp和输出errno对应的错误描述信息strerror的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。