導航:首頁 > 文件類型 > linux文件拷貝函數

linux文件拷貝函數

發布時間:2023-08-04 21:59:50

linux下用簡單c語言代碼怎麼實現實現文件夾所有內容的復制

||#include <sys/stat.h>
#include <unistd.h>
// 目錄
int isdir(char *path)
{
struct stat buf;
int cc;
cc=stat(path,&buf);
if(!cc && (buf.st_mode & S_IFDIR)) return(1);
return(cc);
}
// 可讀普通文件
int isrfile(char *path)
{
struct stat buf;
int cc;
int euid,egid;
cc=stat(path,&buf);
if(!cc) {
if((buf.st_mode & S_IFMT) != S_IFREG) return 0;
euid=geteuid();
egid=getegid();
if(euid==0) {
if(buf.st_mode & S_IRUSR || buf.st_mode & S_IRGRP ||
buf.st_mode & S_IROTH)
return 1;
else return 0;
}
if((buf.st_mode & S_IROTH)!=0) return 1;
if((buf.st_gid == egid) && ((buf.st_mode & S_IRGRP)!=0))
return 1;
if((buf.st_uid == euid) && ((buf.st_mode & S_IRUSR)!=0))
return 1;

}
return cc;
} 【江西新華】

㈡ Linux有沒有文件夾的復制,移動,重命名函數

跟文件一樣。

cp命令用於復制文件或目錄,格式為:「cp [選項] 源文件 目標文件」。

想必您一定對復制操作不是很陌生的,在Linux系統中的復制操作其實具體還分為3種情況,第一種情況是如果目標文件是個目錄,則會將源文件復制到該目錄中,第二種情況是如果目標文件也是個普通文件,則會提示是否要覆蓋它,最後是第三種的情況了,如果目標文件是不存在的,則會將源文件修改成目標文件的名稱,類似於是重命名的操作。

參數
作用

-p
保留原始文件的屬性

-d
若對象為"鏈接文件",則保留該"鏈接文件"的屬性

-r
遞歸持續復制(用於目錄)

-i
若目標文件存在則詢問是否覆蓋

-a
相當於-pdr(p,d,r為上述的參數)

首先創建一個名為install.log的文件,然後將其復制出來一份名為x.log的備份文件:

[root@linuxprobe ~]# touch install.log
[root@linuxprobe ~]# cp install.log x.log
[root@linuxprobe ~]# ls
install.log x.log

mv命令用於移動文件或改名,格式為:「mv [選項] 源文件 [目標路徑|目標文件名]」。

剪切操作不同於復制操作,因為它會默認將源文件刪除掉,用戶就只有剪切後的文件了,並且如果對一個文件在同一個目錄中進行剪切操作,其實也是重命名的作用:

[root@linuxprobe ~]# mv x.log linux.log

rm命令用於刪除文件或目錄,格式為:「rm [選項] 文件」。

在Linux系統中刪除文件時會默認再向您詢問是否要執行刪除操作,如果不想總看到這種反復的確認信息,您可以使用「-f」參數來直接強制刪除,另外還要刪除於目錄文件夾的話,必需追加一個「-r」參數才可以,否則是刪除不掉的,例如咱們來嘗試刪除下剛剛那兩個文件吧:
[root@linuxprobe ~]# ls
install.log linux.log
[root@linuxprobe ~]# rm install.log
rm: remove regular empty file 『install.log』? y
[root@linuxprobe ~]# rm -rf linux.log
[root@linuxprobe ~]# ls
[root@linuxprobe ~]#

可以看下http://www.linuxprobe.com/chapter-02.html

㈢ linux提供的拷貝函數

這句話表達得有問題,應該是 Linux 系統提供的文件拷貝命令是 cp。基本格式是:cp file1 file2
若想表達拷貝函數的話,那麼只能夠用於程序設計語言中,例如:字元串拷貝函數。

㈣ linux 為什麼要使用_to_user() _from_user()

_from_user(): 內核態可以訪問該地址的,否則為啥可以memcpy。只是說內核態訪問的時候,無法保證用戶態的地址(虛擬)有對應的物理地址映射。所以先做校驗,如果校驗地址成功,則做memcpy,否則只是做memset。這樣做的目的是防止內核態segement fault。否則問題就大了。

可以參考如下鏈接,我覺得講的不錯。

網頁鏈接

㈤ linux中,什麼函數可以讀取目錄

LINUX下歷遍目錄的方法一般是這樣的
打開目錄-》讀取-》關閉目錄
相關函數是
opendir -> readdir -> closedir

#include <dirent.h>
DIR *opendir(const char *dirname);

#include <dirent.h>
struct dirent *readdir(DIR *dirp);

#include <dirent.h>
int closedir(DIR *dirp);

好了,三個函數都出來了呵呵,原型就是上面,給自己解釋一下免得以後我自己忘了呵呵!我以經忘過好幾回了,所以這次放上博客來
opendir用於打開目錄,是類似於流的那種方式,返回一個指向DIR結構體的指針他的參數*dirname是一個字元數組或者字元串常量,
readdir函數用於讀取目錄,他只有一個參數,這個參數主opendir返回的結構體指針,或者叫句柄更容易理解些吧。這個函數也返回一個結構體指針 dirent *
dirent的結構如下定義
struct dirent
{
long d_ino; /* inode number */
off_t d_off; /* offset to this dirent */
unsigned short d_reclen; /* length of this d_name */
char d_name [NAME_MAX+1]; /* file name (null-terminated) */
}
結構體中d_ino存放的是該文件的結點數目,什麼是結點數目呢我也說不清楚了呵呵,查一下其它資料了
d_off 是文件在目錄中的編移,具體是什麼意思我也不是很明白,我很少用到它,其本上就是用到d_name short d_reclen是這個文件的長度,需要注意的是這里的長度並不是指文件大小,因為大小和長度是2回事了,你可以用lseek將文件長度移得很長,但大小其實還是那麼大.最後一個元素就是我們要的了,文件名稱!
寫了一個實例:

/**
* 功能: Linux下C語言目錄歷遍 (讀取目錄)
* 作者: 小徐
* 郵箱: [email protected]
* QQ: 339534039
* 轉載請註明出處
*/
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <dirent.h>

void print_usage(void);

void print_usage(void)
{
printf("Usage: test dirname\n");
}

int main(int argc,char *argv[])
{
DIR * dp;
struct dirent *filename;

if (argc < 2)
{
print_usage();
exit(1);
}

dp = opendir(argv[1]);
if (!dp)
{
fprintf(stderr,"open directory error\n");
return 0;
}
while (filename=readdir(dp))
{
printf("filename:%-10s\td_info:%ld\t d_reclen:%us\n",
filename->d_name,filename->d_ino,filename->d_reclen);
}
closedir(dp);
return 0;
}

將上面代碼保存為readdir.c執行下面的命令進行編譯測試
[root@phpos ~]# gcc readdir.c
[root@phpos ~]# ./a.out
Usage: test dirname
[root@phpos ~]# ./a.out /etc/samba/
filename:lmhosts d_info:49296 d_reclen:24s
filename:smb.conf d_info:49825 d_reclen:24s
filename:smbpasswd d_info:49402 d_reclen:24s
filename:.. d_info:47906 d_reclen:16s
filename:secrets.tdb d_info:49812 d_reclen:24s
filename:. d_info:49295 d_reclen:16s
filename:smbusers d_info:49377 d_reclen:24s
[root@phpos ~]# ./a.out /var/
filename:preserve d_info:31971 d_reclen:24s
filename:lock d_info:31966 d_reclen:16s
filename:yp d_info:31976 d_reclen:16s
filename:empty d_info:31962 d_reclen:24s
filename:run d_info:31972 d_reclen:16s
filename:lib d_info:31939 d_reclen:16s
filename:nis d_info:31969 d_reclen:16s
filename:local d_info:31965 d_reclen:24s
filename:spool d_info:31973 d_reclen:24s
filename:tmp d_info:31941 d_reclen:16s
filename:opt d_info:31970 d_reclen:16s
filename:log d_info:31959 d_reclen:16s
filename:crash d_info:31997 d_reclen:24s
filename:.. d_info:2 d_reclen:16s
filename:account d_info:32037 d_reclen:24s
filename:mail d_info:31968 d_reclen:16s
filename:cache d_info:31960 d_reclen:24s
filename:db d_info:31961 d_reclen:16s
filename:. d_info:31938 d_reclen:16s
[root@phpos ~]#
程序正常執行!到此完了呵呵!!

㈥ 用linux下的c語言讀取txt文件中的列數據

1.用fgets函數可以讀取文件中某行的數據,某列數據就必須一個一個讀入每行的第回幾個字元,再存入到一答個字元串當中。

2.常式:

#include<stdio.h>
#include<string.h>
voidmain()
{
chara[100],b[100],c[100];
inti=3,j=4,k=0;//第三行,第四列
FILE*fp=fopen("data.txt","r");
while(fgets(c,100,fp)){//讀入每行數據
i--;
if(i==0)strcpy(a,c);//讀到第三行數據
b[k++]=c[j-1];//把每行的那列字元拷到b中
}
b[k]=0;
printf("第%d行數據:%s ",i,a);
printf("第%d列數據:%s ",j,b);
fclose(fp);
}

㈦ 用linux下的c語言如何編寫保存文件函數

你的這抄個「保存文件」是什麼意思襲?或者說是在什麼情況下的?比如說:把信息輸入到已經打開的文件中(關閉不關閉文件),另外,有沒有緩沖區等?
最簡單的就是:打開一個文件(open函數),把要寫入的信息、數據通過write函數寫入文件中,然後再用close函數關閉文件。這種是適時性的,一般我們會有緩沖區(通過建立一個臨時文件或備份文件),即寫入文件中的信息並沒有直接寫入到原文件,而是寫入到緩沖區中,在應用程序中,如果我們確定要寫入原文件,可以通過一個命令來把緩沖區中的內容再真正寫入(可以用備份文件來替換原文件)到原文件中。

閱讀全文

與linux文件拷貝函數相關的資料

熱點內容
為什麼膜拜單車app閃退 瀏覽:994
十堰編程在哪裡學 瀏覽:383
論文所需的數據要從哪裡找 瀏覽:461
可以添加直播源的網路電視軟體 瀏覽:57
文件夾pdf文件 瀏覽:562
文件太大不能播放 瀏覽:959
小米微信信息不顯示內容 瀏覽:966
備忘錄app源代碼 瀏覽:694
有哪些類似於中國的網路 瀏覽:784
如何設置蘋果5手機鎖屏密碼忘了怎麼辦 瀏覽:656
視頻下載目錄文件管理怎麼找 瀏覽:405
區域網內共享文件夾 瀏覽:389
java介面能實現介面嗎 瀏覽:460
怎麼把文件拖拽到ps里 瀏覽:245
繪畫編程是學的什麼 瀏覽:919
小蟻微單m1升級版 瀏覽:646
有什麼app會被人收購 瀏覽:709
經濟開發區數據標定員考試考什麼 瀏覽:145
類似於vb編程的有哪些語言 瀏覽:684
數據驗證對話框中選項有哪些 瀏覽:218

友情鏈接