A. 如何在linux下使用c語言操作臨時文件
使用臨時文件要考慮幾個問題:
1、保證臨時文件間的文件名不互助沖突。
2、保證臨時文件中內容不被其他用戶或者黑客偷看、刪除和修改。
所以在linux下有專門處理臨時文件的函數
mkstemp函數
mkstemp函數將在系統中以獨一無二的文件名創建一個文件並打開,而且只有當前用戶才有訪問這個臨時文件的許可權,當前用戶對這個臨時文件可以打開並進行讀、寫操作。mkstemp函數只有一個參數,這個參數是個以「XXXXXX」結尾的非空字元串。mkstemp函數會用隨機產生的字元串替換「XXXXXX」,保證了文件名的唯一性。函數返回一個文件描述符,如果執行失敗返回-1。在glibc 2.0.6 以及更早的glibc庫中這個文件的訪問許可權是0666 ,glibc 2.0.7 以後的庫這個文件的訪問許可權是0600。
當臨時文件完成她的使命如果不把它清除干凈把或者程序由於意外在臨時文件被清除前就已經退出,臨時文件所在的目錄會塞滿垃圾。由於mkstemp函數創建的臨時文件不能自動刪除(請參考下文中的tmpfile函數)。執行完mkstemp函數後要調用unlink函數,unlink函數刪除文件的目錄入口,所以臨時文件還可以通過文件描述符進行訪問,直到最後一個打開的進程關閉文件操作符,或者程序退出後臨時文件被自動徹底地刪除。
B. linux中c語言怎麼刪除指定文件
用C語言刪除某個文件中的一行內容的原理就是 將該行的末尾和 開頭找到, 然後將 改行的末尾
C. Linux文件的復制、刪除和移動命令是.
linux 下的復制刪除和移動的命令分別是:
cprm 和 mv
詳解如下:
Linux 的cp命令
功能: 復制文件或目錄
說明: cp指令用於復制文件或目錄,如同時指定兩個以上的文件或目錄,且最後的目的地是一個已經存在的目錄,則它會把前面指定的所有文件或目錄復制到此目錄中。若同時指定多個文件或目錄,而最後的目的地並非一個已存在的目錄,則會出現錯誤信息
參數:
-a 或 --archive 此參數的效果和同時指定"-dpR"參數相同
-b 或 --backup 刪除、覆蓋目的文件先備份,備份的文件或目錄亦建立為符號鏈接,並指向源文件或目錄鏈接的源文件或目錄。假如沒有加上這個參數,在復制過程中若遇到符號鏈接,則會直接復制源文件或目錄
-f 或 --force 強行復制文件或目錄, 不論目的文件或目錄是否已經存在
-i 或 --interactive 覆蓋文件之前先詢問用戶
-l 或 --link 對源文件建立硬鏈接,而非復制文件
-p 或 --preserve 保留源文件或目錄的屬性,包括所有者、所屬組、許可權與時間
-P 或 --parents 保留源文件或目錄的路徑,此路徑可以是絕對路徑或相對路徑,且目的目錄必須已經豐在
-r 遞歸處理,將指定目錄下的文件與子目錄一並處理。若源文件或目錄的形態,不屬於目錄或符號鏈接,則一律視為普通文件處理
-R 或 --recursive 遞歸處理,將指定目錄下的文件及子目錄一並處理
-s 或 --symbolic-link 對源文件建立符號鏈接,而非復制文件
-S <備份字尾字元串> 或 --suffix=<備份字尾字元串> 用"-b"參數備份目的文件後,備份文件的字尾會被加上一個備份字元串。默認的備份字尾符串是符號"~"
-u 或 --update 使用這項參數之後,只會在源文件的修改時間(Modification Time)較目的文件更新時,或是名稱相互對應的目的文件並不存在,才復制文件
-v 或 --verbose 顯示執行過程
-V <備份方式> 或 --version-control=<備份方式> 指定當備份文件時,備份文件名的命名方式,有以下3種:
1.numbered或t, 將使用備份編號,會在字尾加上~1~字元串,其數字編號依次遞增
2.simple或never 將使用簡單備份,默認的備份字尾字元串是~, 也可通過-S來指定
3.existing或nil將使用當前方式,程序會先檢查是否存在著備份編號,若有則採用備份編號,若無則採用簡單備份
-x 或 --one-file-system 復制的文件或目錄存放的文件系統,必須與cp指令執行時所處的文件系統相同,否則不復制,亦不處理位於其他分區的文件
--help 顯示在線幫助
--sparse=<使用時機> 設置保存希疏文件的時機
--version 顯示版本
示例:
.復制文件,只有源文件較目的文件的修改時間新時,才復制文件
cp -u -v file1 file2
.將文件file1復製成文件file2
cp file1 file2
.採用交互方式將文件file1復製成文件file2
cp -i file1 file2
.將文件file1復製成file2,因為目的文件已經存在,所以指定使用強制復制的模式
cp -f file1 file2
.將目錄dir1復製成目錄dir2
cp -R file1 file2
.同時將文件file1、file2、file3與目錄dir1復制到dir2
cp -R file1 file2 file3 dir1 dir2
.復制時保留文件屬性
cp -p a.txt tmp/
.復制時保留文件的目錄結構
cp -P /var/tmp/a.txt ./temp/
.復制時產生備份文件
cp -b a.txt tmp/
.復制時產生備份文件,尾標 ~1~格式
cp -b -V t a.txt /tmp
.指定備份文件尾標
cp -b -S _bak a.txt /tmp
Linux 的rm 命令
使用許可權:任何使用者
使用方式:rm [options] name...
說明:刪除檔案及目錄。
參數:
-i 刪除前逐一詢問確認。
-f 即使原檔案屬性設為唯讀,亦直接刪除,無需逐一確認。
-r 將目錄及以下之檔案亦逐一刪除。
範例:
刪除任何C語言程式檔;刪除前逐一詢問確認 :
rm -i *.c
將 Finished 子目錄及子目錄中任何檔案刪除 :
rm -r Finished
功能說明:刪除文檔或目錄。
語法:rm [-dfirv][--help][--version][文檔或目錄...]
補充說明:執行rm指令可刪除文檔或目錄,如欲刪除目錄必須加上參數"-r",否則預設僅會刪除文檔。
參數:
-d或--directory 直接把欲刪除的目錄的硬連接數據刪成0,刪除該目錄。
-f或--force 強制刪除文檔或目錄。
-i或--interactive 刪除既有文檔或目錄之前先詢問用戶。
-r或-R或--recursive 遞歸處理,將指定目錄下的任何文檔及子目錄一並處理。
-v或--verbose 顯示指令執行過程。
--help 在線幫助。
--version 顯示版本信息
linux的mv命令
mv命令是move的縮寫,可以用來移動文件或者將文件改名(move(rename)files),是Linux系統下常用的命令,經常用來備份文件或者目錄。
1.命令格式:
mv[選項]源文件或目錄目標文件或目錄
2.命令功能:
視mv命令中第二個參數類型的不同(是目標文件還是目標目錄),mv命令將文件重命名或將其移至一個新的目錄中。當第二個參數類型是文件時,mv命令完成文件重命名,此時,源文件只能有一個(也可以是源目錄名),它將所給的源文件或目錄重命名為給定的目標文件名。當第二個參數是已存在的目錄名稱時,源文件或目錄參數可以有多個,mv命令將各參數指定的源文件均移至目標目錄中。在跨文件系統移動文件時,mv先拷貝,再將原有文件刪除,而鏈至該文件的鏈接也將丟失。
3.命令參數:
-b:若需覆蓋文件,則覆蓋前先行備份。
-f:force強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋;
-i:若目標文件(destination)已經存在時,就會詢問是否覆蓋!
-u:若目標文件已經存在,且source比較新,才會更新(update)
-t :--target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目標目錄,該選項適用於移動多個源文件到一個目錄的情況,此時目標目錄在前,源文件在後。
說明:
-b不接受參數,mv會去讀取環境變數VERSION_CONTROL來作為備份策略。
--backup該選項指定如果目標文件存在時的動作,共有四種備份策略:
1.CONTROL=none或off:不備份。
2.CONTROL=numbered或t:數字編號的備份
3.CONTROL=existing或nil:如果存在以數字編號的備份,則繼續編號備份m+1...n:
執行mv操作前已存在以數字編號的文件log2.txt.~1~,那麼再次執行將產生log2.txt~2~,以次類推。如果之前沒有以數字編號的文件,則使用下面講到的簡單備份。
4.CONTROL=simple或never:使用簡單備份:在被覆蓋前進行了簡單備份,簡單備份只能有一份,再次被覆蓋時,簡單備份也會被覆蓋。
D. linux c語言 進入一個 文件夾 刪除裡面的空文件
stat("/home/administrator/qianrushi/1/t->d_name",&buf);
這個函數的第一個參數有錯吧?如果是需要全路徑,那應該再拼接一次放到個臨時變數里頭再傳進去.如:
char stmp[255];
sprintf(stmp,"%s/%s","/home/administrator/qianrushi/1",t->d_name);
stat(stmp,&buf);
E. Linux c中用mkdir函數創建10個文件在用rmdir函數刪掉用for循環
Linux c語言可以使用系統提供的mkdir函數來創建文件夾。
1、函數原型
int mkdir(const char *path, mode_t mode);
2、參數說明:
3、需要頭文件
#include<sys/stat.h>
4、示例
說明:函數調用試圖建立777許可權的文件夾,但是在實際程序執行時,還需要考慮umask值,最終才會得到實際的許可權。
5、執行效果如下圖所示
說明:t.c是源碼文件,有gcc進行編譯,-o是gcc的參數,有於指明編譯後輸出的文件,t為源碼經gcc編譯後生成的可執行文件。./t是執行當前目錄下的生成的可執行文件t。
F. 在Linux虛擬文件系統里如何代碼實現(C語言):在目錄中刪除文件
告訴你一個最簡單的辦法,在windows下安裝一個winscp軟體,然後運行,打開一個窗口,如果Linux的ip地址,用戶名,密碼,點擊連接,如果連接成功,會出現一個類似windows資源管理器的窗口,分左右兩屏,左邊是windows目錄,右邊是Linux目錄,很簡單,滑鼠拖拽,很方便的
G. Linux C用什麼函數可以刪除某個文件中的一行內容
用C語言刪除某個文件中的一行內容的原理就是
將該行的末尾和
開頭找到,
然後將
改行的末尾的所有內容就復制到
改行的開頭,使用覆蓋的方式來實現刪除.
如果實在不懂的話,
你就在改行的末尾
開始寫入一定長度的(視改行的位元組長度而定)
的轉義字元
'\b'
H. linux下c語言編程
實在點,給你些命令操作操作,不過好象有點多,哈哈
Linux/Unix常用命令
1、目錄操作
和DOS相似,UNIX採用樹型目錄管理結構,由根目錄(/)開始一層層將子目錄建下去,各子目錄以 / 隔開。用戶login後,工作目錄的位置稱為 home directory,由系統管理員設定。『~』符號代表自己的home directory,例如 ~/myfile 是指自己home目錄下myfile這個文件。
(1)顯示目錄文件 ls
執行格式: ls [-atFlgR] [name] (name可為文件或目錄名稱)
例: ls 顯示出當前目錄下的文件
ls -a 顯示出包含隱藏文件的所有文件
ls -t 按照文件最後修改時間顯示文件
ls -F 顯示出當前目錄下的文件及其類型
ls -l 顯示目錄下所有文件的許可權、擁有者、文件大小、修改時間及名稱
ls -lg 同上
ls -R 顯示出該目錄及其子目錄下的文件
注:ls與其它命令搭配使用可以生出很多技巧(最簡單的如"ls -l | more"),更多用法請輸入ls --help查看,其它命令的更多用法請輸入 命令名 --help 查看.
(2)建新目錄 mkdir
執行格式: mkdir directory-name
例: mkdir dir1 (新建一名為dir1的目錄)
(3)刪除目錄 rmdir
執行格式: rmdir directory-name 或 rm directory-name
例:rmdir dir1 刪除目錄dir1,但它必須是空目錄,否則無法刪除
rm -r dir1 刪除目錄dir1及其下所有文件及子目錄
rm -rf dir1 不管是否空目錄,統統刪除,而且不給出提示,使用時要小心
(4) 改變工作目錄位置 cd
執行格式: cd [name]
例: cd 改變目錄位置至用戶login時的working directory
cd dir1 改變目錄位置,至dir1目錄
cd ~user 改變目錄位置,至用戶的working directory
cd .. 改變目錄位置,至當前目錄的上層目錄
cd ../user 改變目錄位置,至上一級目錄下的user目錄
cd /dir-name1/dir-name2 改變目錄位置,至絕對路徑(Full path)
cd - 回到進入當前目錄前的上一個目錄
(5)顯示當前所在目錄pwd
執行格式: pwd
(6)查看目錄大小
執行格式: [-s] directory
例: dir1 顯示目錄dir1及其子目錄容量(以kb為單位)
-s dir1 顯示目錄dir1的總容量
(7)顯示環境變數
echo $HOME 顯示家目錄
echo $PATH 顯示可執行文件搜索路徑
env 顯示所有環境變數(可能很多,最好用"env | more","env | grep PATH"等)
(8)修改環境變數,在bash下用export,如:
export PATH=$PATH:/usr/local/bin
想知道export的具體用法,可以用shell的help命令:help export
2、文件操作
(1)查看文件(可以是二進制的)內容 cat
執行格式:cat filename或more filename 或cat filename|more
例: cat file1 以連續顯示方式,查看文件file1的內容
more file1
或 cat file1|more 以分頁方式查看文件的內容
(2)刪除文件 rm
執行格式: rm filename
例: rm file?
rm f*
(3)復制文件 cp
執行格式: cp [-r] source destination
例: cp file1 file2 將file1復製成file2
cp file1 dir1 將file1復制到目錄dir1
cp /tmp/file1 將file1復制到當前目錄
cp /tmp/file1 file2 將file1 復制到當前目錄名為file2
cp -r dir1 dir2 (recursive )復制整個目錄。
(4)移動或更改文件、目錄名稱mv
執行格式: mv source destination
例: mv file1 file2 將文件file1,更名為file2
mv file1 dir1 將文件file1,移到目錄dir1下
mv dir1 dir2
(5)比較文件(可以是二進制的)或目錄的內容 diff
執行格式: diff [-r] name1 name2 (name1、name2同為文件或目錄)
例: diff file1 file2 比較file1與file2的不同處
diff -r dir1 dir2 比較dir1與dir2的不同處
(6)文件中字元串的查找 grep
執行格式: grep string file
例: grep abc file1 查找並列出串abc所在的整行文字
(7)文件或命令的路徑尋找
執行格式一:whereis command 顯示命令的路徑
執行格式二:which command 顯示路徑及使用者所定義的別名
執行格式三:whatis command 顯示命令的功能摘要
(8)建立文件或目錄的鏈接 ln
例: ln source target1 建立source文件(已存在)的硬鏈接,命名為target1
ln -s source target2 建立source文件的符號鏈接,命名為target2
文件編輯器vi
vi是在UNIX 上被廣泛使用的中英文編輯軟體。vi是visual editor的縮寫,是UNIX提供給用戶的一個窗口化編輯環境。
進入vi,直接執行vi編輯程序即可。
例:$vi test.c
顯示器出現vi的編輯窗口,同時vi會將文件復制一份至緩沖區(buffer)。vi先對緩沖區的文件進行編輯,保留在磁碟中的文件則不變。編輯完成後,使用者可決定是否要取代原來舊有的文件。
1、vi的工作模式
vi提供二種工作模式:輸入模式(insert mode)和命令模式(command mode)。使用者進入vi後,即處在命令模式下,此刻鍵入的任何字元皆被視為命令,可進行刪除、修改、存檔等操作。要輸入信息,應轉換到輸入模式。
(1)命令模式
在輸入模式下,按ESC可切換到命令模式。命令模式下,可選用下列指令離開vi:
:q! 離開vi,並放棄剛在緩沖區內編輯的內容
:wq 將緩沖區內的資料寫入磁碟中,並離開vi
:ZZ 同wq
:x 同wq
:w 將緩沖區內的資料寫入磁碟中,但並不離開vi
:q 離開vi,若文件被修改過,則要被要求確認是否放棄修改的內容,此指令可與:w配合使用
(2)命令模式下游標的移動
H 左移一個字元
J 下移一個字元
K 上移一個字元
L 右移一個字元
0 移至該行的首
$ 移至該行的末
^ 移至該行的第一個字元處
H 移至窗口的第一列
M 移至窗口中間那一列
L 移至窗口的最後一列
G 移至該文件的最後一列
W, W 下一個單詞 (W 忽略標點)
B, B 上一個單詞 (B 忽略標點)
+ 移至下一列的第一個字元處
- 移至上一列的第一個字元處
( 移至該句首
) 移至該句末
{ 移至該段首
} 移至該段末
NG 移至該文件的第n列
N+ 移至游標所在位置之後第n列
n- 移至游標所在位置之前第n列
(3)輸入模式
輸入以下命令即可進入vi輸入模式:
a(append) 在游標之後加入資料
A 在該行之末加入資料
i(insert) 在游標之前加入資料
I 在該行之首加入資料
o(open) 新增一行於該行之下,供輸入資料用
O 新增一行於該行之上,供輸入資料用
dd 刪除當前游標所在行
X 刪除當前游標字元
x 刪除當前游標之前字元
U 撤消
• 重做
F 查找
ESC鍵 離開輸入模式
GNU C編譯器
LINUX上可用的C編譯器是GNU C編譯器,它建立在自由軟體基金會編程許可證的基礎上,因此可以自由發布。
LINUX 上的GNU C編譯器(GCC)是一個全功能的ANCI C兼容編譯器。下面介紹GCC和一些GCC編譯器最常用的選項。
1、使用GCC
通常後跟一些選項和文件名來使用GCC編譯器。GCC命令的基本用法如下:
gcc [options] [filenames]
命令行選項指定的編譯過程中的具體操作
2、GCC常用選項
GCC有超過100個的編譯選項可用,這些選項中的許多可能永遠都不會用到,但一些主要的選項將會頻繁使用。很多的GCC選項包括一個以上的字元,因此必須為每個選項指定各自的連字元,並且就像大多數LINUX 命令一樣不能在一個單獨的連字元後跟一組選項。例如:
gcc test.c
編譯成功後,當前目錄下就產生了一個可執行文件a.out。
也可用-o選項來為即將產生的可執行文件指定一個文件名來代替a.out。例如:
gcc -o count count.c
此時得到的可執行文件就不再是a.out,而是count。
3、執行文件
格式: ./可執行文件名
例:./a.out
./count