linux系統編程:用truncate調整文件大小

来源:https://www.cnblogs.com/ghostwu/archive/2018/01/11/8269220.html
-Advertisement-
Play Games

truncate的使用非常簡單: int truncate(const char *path, off_t length); 參數1:文件名 參數2: 文件需要被調整的大小 length 大於 文件大小, 文件後面會填充空白位元組或者空洞 length 小於 文件大小, 文件多出的部分,會被捨棄 源代 ...


truncate的使用非常簡單:

int truncate(const char *path, off_t length);

參數1:文件名

參數2:  文件需要被調整的大小

length 大於 文件大小, 文件後面會填充空白位元組或者空洞

length 小於 文件大小, 文件多出的部分,會被捨棄

源代碼:

 1 /*================================================================
 2 *   Copyright (C) 2018 . All rights reserved.
 3 *   
 4 *   文件名稱:trunc.c
 5 *   創 建 者:ghostwu(吳華)
 6 *   創建日期:2018年01月11日
 7 *   描    述:調整文件大小
 8 *
 9 ================================================================*/
10 
11 #include <stdio.h>
12 #include <string.h>
13 #include <unistd.h>
14 #include <stdlib.h>
15 #include <sys/types.h>
16 #include <limits.h>
17 
18 int main(int argc, char *argv[])
19 {
20     if( argc < 3 || strcmp( argv[1], "--help" ) == 0 ) {
21         printf( "usage:%s filename s<length>\n", argv[0] );
22         exit( -1 );
23     }
24 
25     if( argv[2][0] != 's' ) {
26         printf( "設置文件的大小,需要用s開頭\n" );
27         exit( -1 );
28     }
29 
30     char* endptr;
31     long int len = strtol( &argv[2][1], &endptr, 10 );
32     if( len == LONG_MIN || len == LONG_MAX ) {
33         printf( "參數轉換失敗\n" );
34         exit( -1 );
35     }
36 
37     truncate( argv[1], len );
38 
39     return 0;
40 }
View Code

完整的測試:

ghostwu@ubuntu:~/c_program/tlpi/chapter5$ ls -l test.txt
-rw-rw-r-- 1 ghostwu ghostwu 410 1月  11 16:09 test.txt
ghostwu@ubuntu:~/c_program/tlpi/chapter5$ ./trunc test.txt s500
ghostwu@ubuntu:~/c_program/tlpi/chapter5$ ls -l test.txt 
-rw-rw-r-- 1 ghostwu ghostwu 500 1月  11 16:38 test.txt
ghostwu@ubuntu:~/c_program/tlpi/chapter5$ vim test.txt 
ghostwu@ubuntu:~/c_program/tlpi/chapter5$ ./trunc test.txt 300
設置文件的大小,需要用s開頭
ghostwu@ubuntu:~/c_program/tlpi/chapter5$ ./trunc test.txt s300
ghostwu@ubuntu:~/c_program/tlpi/chapter5$ ls -l test.txt 
-rw-rw-r-- 1 ghostwu ghostwu 300 1月  11 16:38 test.txt

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一. 開發環境 1. 此開發平臺主要用來開發基於.NET 4.0及以上版本的應用 2. 點擊此下載 Visual Studio 2012 Ultimate 中文版開發工具 3. 點擊此下載 DXperience-13.2.6 及破解文件 4. 點擊此下載 軟媒虛擬光碟機 5. 點擊此下載需要的 MyS ...
  • 最近公司要遷移.net 2.0的框架到.net core上,先搭建一個簡單環境,利用 IIS +Kestrel 運行了下,經過一下午折騰,成功了,記錄下。 放在有道雲筆記了,這裡是連接. https://note.youdao.com/share/?id=c28de2285dfa746b801656 ...
  • 執行表達式樹 本節主要展示如何去執行表達式樹。運行一個可能含有返回值或只是執行一個操作,比如方法調用的表達式樹。 只有表示lambda表達式的表達式樹能夠被執行。它是一個 "LambdaExpression" 或 "Expression" 類型。為了執行這些表達式樹,調用 "Compile" 方法來 ...
  • STM32的“中斷”機制很複雜,看了PM(Cortex-m4)和RM,對它只瞭解了一個大概。首先,與“中斷”相關的術語就有 exception, interrupt, event 三個。Cortex-m4核中包含一個NVIC控制器,用於處理 exception。而 interrupt 是屬於 exc ...
  • 用戶,組及許可權 基本概念 1)用戶,組,許可權 用戶: 獲取資源的標識。(代表一個用戶)/etc/passwd 組: 許可權的集合,用於方便的指派許可權,不能登錄和使用。(代表一類用戶 邏輯容器 可放用戶 可關聯許可權)/etc/group 許可權: 表示資源的訪問能力。 2)/etc/passwd文件的文件 ...
  • linux系統遵循的基本原則 由目標單一的小程式組成,組合小程式完成複雜任務; 一切皆文件; 儘量避免捕捉用戶介面; 配置文件保存為純文本文件; Linux命令行常識 命令格式 選項: 短選項: 多個短選項可以結合: a b = ab 長選項: 參數: 命令的作用對象; 命令類型 內置命令: she ...
  • 4x4矩陣鍵盤實拍照如下圖。其構成是4行(L1:4)x 4列(R1:4)共16個按鍵,當第n行、第m列的按鈕(n, m)按下時,引腳 Ln 與 Rm 導通: 有一篇文章,對矩陣鍵盤的介面講解得很詳細。概括起來說,按鍵檢測分為3個階段。第一個階段,掃描行。行I/O口設為input模式,使用上拉電阻。列 ...
  • 一、cat命令 cat即concatenate 查看文件內容、創建文件、文件合併、追加文件內容等功能 PS(cat 會一次顯示所有的內容、適合內容少的文本文件) cat 文件名 -b 對非空輸出行編號 -n 對輸出 所有行編號 二、more命令 分屏顯示文件內容 more 文件名 空格鍵顯示後續內容 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...