簡體   English   中英

使用系統調用的I / O

[英]I/O using system calls

我有一個文件bisht.txt和pranav.txt。 我想將內容從bisht.txt復制到pranav.txt。 讀取系統調用正常工作,因為我緊隨其后打印了str,該字符串打印了文件的確切內容,但是當我檢查目標文件pranav.txt的內容時,會寫一些中文,但是沒有。 字符數與否相同。 寫系統調用中提到的字節數。 請幫忙!

    #include<unistd.h>
    #include<fcntl.h>
#include<stdio.h>

main()
{
//FILE Descriptor rdes and wdes

/*Open file pranav.txt in write-only mode,
O_CREAT creates file if it does not exist and open bisht.txt in read-only mode*/
int rdes = open("bisht.txt",O_RDONLY);   
int wdes = open("pranav.txt", O_CREAT | O_WRONLY);

char str[10];
if(wdes!=-1 && rdes!=-1)
{
    //To read
    read(rdes,&str,10);
    //To write on file
    write(wdes,&str,10);
}
else
{
    //Print "error" on screen
    write(2,"File_Opening_Error",18);
}
close(wdes);
close(rdes);
}

您沒有使用讀取的返回值來寫入字節。 read函數返回實際讀取的字節數:

int cnt;
cnt=read(rdes,&str,sizeof(str));
if(cnt>0) { write(wdes,&str,cnt); }

從技術上講,該寫操作可能返回一個較短的計數,因此您應該循環執行直到寫完所有字節為止,或者為-1表示錯誤。 盡管對於本地存儲設備,短寫可能永遠不會發生。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM