#include <stdio.h>#include <stdlib.h>#include <fcntl.h>#include <unistd.h>int main(){ int fd = open("a.txt",O_RDWR); if(fd == -1) { perror("打開文件失敗"); exit(-1); } int fd2 = dup(fd); printf("fd=%d,fd2=%d\n",fd,fd2); write(fd,"1",1); write(fd2,"2",1); int fd3 = dup2(fd,100); printf("fd3 = %d\n",fd3); write(100,"ok",fd3); int cur = lseek(fd3,2,SEEK_SET); printf("cur=%d\n",cur); char ch[100] = {}; if(read(fd3,ch,sizeof(ch))<0) { perror("讀取文件失敗"); } printf("%s\n",ch);} 運行結果是fd=3,fd2=4fd3 = 100cur=012ok記過沒有什么問題,但是文件里出現了問題,貌似文件里的內容不是12ok,還有亂碼現象文件里的內容為:12okcur=%d讀取文件失敗;0????L0???p?????L????N????zR請高手指點,為什么文件里會有那寫亂碼問題???????而且那些亂碼還讀不出來???
2 回答
慕標琳琳
TA貢獻1830條經驗 獲得超9個贊
將write(100,"ok",fd3);改成write(100,"ok",2)即可,你這個是向文件中寫入100個字符,內存中"OK" 后面的是隨機串,所以出現亂碼
- 2 回答
- 0 關注
- 774 瀏覽
添加回答
舉報
0/150
提交
取消
