open函數linux
⑴ linux 中 open和fopen的區別
在 C 語言中,open()、read()、write()、close() 函數是對一個二進制文件(或者文本文件)進行的低級操作函數;而fopen()、fread()、fwrite()、fclose() 函數是對一個二進制文件(或者文本文件)進行的高級操作函數。具體的函數參數如何寫法,你可以參考 C 語言庫函數的相關文檔。通常情況下,如果要處理的數據比較大的話,低級操作肯定要比高級操作在速度上要快得多。
⑵ linux 用open打不開串口
操作硬體之前都是要先open設備,先來分析下這里的open函數具體做了那些工作(做了大量工作 ,真的!)。
應用層通過open系統調用open(「/dev/s3c2410_serial0」,)一層一層調用到會調用到tty_open。
因為串口在linux下是作為tty設備的,結合前面的注冊過程可以分析這里首先調用的就是tty_open這個函數。
cdev_init(&driver->cdev, &tty_fops);cdev_init(&driver->cdev, &tty_fops);因為根據注冊的時候將s3c2410_serial0注冊為一個字元設備,字元設備對應的驅動為tty_fops 詳細介紹查看下《linux就該這么學》
⑶ linux 中 open和fopen的區別
Linux中open與fopen區別如下:
1、來源
從來源的角度看,兩者能很好地區分開,這也是最顯而易見的區別:
①open是Unix系統調用函數,返回的是文件描述符,它是文件在文件描述符表裡的索引;
②fopen是ANSIC標准中的C語言庫函數,在不同的系統中應該調用不同的內核api。返回的是一個指向文件結構的指針。
2、移植性
這一點從上面的來源可以推斷出來,fopen是C標准函數,因此擁有良好的移植性,而open是Unix系統調用,移植性有限。如Windows下相似的功能使用API函數CreateFile。
3、適用范圍
①open返迴文件描述符,而文件描述符是Unix系統下的一個重要概念,Unix下的一切設備都是以文件的形式操作。如網路套接字、硬體設備等。當然包括操作普通正規文件。
②fopen是用來操縱普通正規文件。
4、文件IO層次
如果從文件IO的角度來看,前者屬於低級IO函數,後者屬於高級IO函數。低級和高級的簡單區分標準是:誰離系統內核更近。低級文件IO運行在內核態,高級文件IO運行在用戶態。
⑷ linux 中 open和fopen的區別
open 是系統調用 返回的是文件句柄,文件的句柄是文件在文件描述副表裡的索引,fopen是C的庫函數,返回的是一個指向文件結構的指針。
fopen是ANSIC標准中的C語言庫函數,在不同的系統中應該調用不同的內核api
linux中的系統函數是open,fopen是其封裝函數
open和fopen的區別:
1、open屬於低級IO,fopen是高級IO。
2、open返回一個文件描述符,fopen返回一個文件指針。
3、open無緩沖,fopen有緩沖。
4、open與 read, write 等配合使用, fopen與 fread, fwrite等配合使用。
5、fopen是在open的基礎上擴充而來的,在大多數情況下,用fopen。
⑸ linux中open函數的問題
#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<stdlib.h>
intmain(void)
{
intfd=-1;
if(-1==(fd=open("/tmp/new",O_CREAT|S_IRWXU))){
/*是O_CREAT|S_IRWXU*/perror("openfileerror");
exit(1);
}
close(fd);
return0;
}
你看看,在tmp目錄下有沒有new文件。
⑹ 在linux系統中如何用open函數創建文件
Linux操作系統內核(kernel)利用文件描述符來訪問文件,文件描述符大於等於0,是一個用戶描述被打開文件的索引值,它指向該文件的相關信息記錄表,當文件打開或者創建新文件的時,就會返回一個文件描述符,當讀寫文件時,也需要使用文件描述符來指定特寫文件。
2、講解open函數
文件需要先打開或則創建
如果返回是-1, 則出錯,如果成功,則返迴文件描述符
第一個參數是文件路徑
第二個參數是flags