ãLinuxä¸å¯¹æ件æä½æ两ç§æ¹å¼ï¼ç³»ç»è°ç¨(system call)ååºå½æ°è°ç¨(Library functions)ãç³»ç»è°ç¨å®é
ä¸å°±æ¯ææåºå±çä¸ä¸ªè°ç¨ï¼å¨linuxç¨åºè®¾è®¡éé¢å°±æ¯åºå±è°ç¨çææãé¢åçæ¯ç¡¬ä»¶ãèåºå½æ°è°ç¨åé¢åçæ¯åºç¨å¼åçï¼ç¸å½äºåºç¨ç¨åºçapi,éç¨è¿æ ·çæ¹å¼æå¾å¤ç§åå ï¼ç¬¬ä¸ï¼åç¼å²ææ¯çå®ç°ã第äºï¼å¯ç§»æ¤æ§ã第ä¸ï¼åºå±è°ç¨æ¬èº«çä¸äºæ§è½æ¹é¢ç缺é·ã第åï¼è®©apiä¹å¯ä»¥æäºçº§å«åä¸é¨çå·¥ä½é¢åã
ãã1ãç³»ç»è°ç¨
ããç³»ç»è°ç¨æä¾çå½æ°å¦open, close, read, write, ioctlçï¼éå
å«å¤´æ件unistd.h.以write为ä¾ï¼å
¶å½æ°åå为 size_t write(int fd, const void *buf, size_t nbytes)ï¼å
¶æä½å¯¹è±¡ä¸ºæ件æ述符ææ件å¥æfd(file descriptor)ï¼è¦æ³åä¸ä¸ªæ件ï¼å¿
é¡»å
以å¯åæéç¨openç³»ç»è°ç¨æå¼ä¸ä¸ªæ件ï¼è·å¾ææå¼æ件çfd,ä¾å¦ fd=open(\â/dev/video\â, O_RDWR)ãfdæ¯ä¸ä¸ªæ´åå¼ï¼æ¯æ°æå¼ä¸ä¸ªæ件ï¼æè·å¾çfd为å½åæ大fdå 1.Linuxç³»ç»é»è®¤åé
äº3个æ件æ述符å¼ï¼0-standard input,1-standard output,2-standard error.
ããç³»ç»è°ç¨é常ç¨äºåºå±æ件访é®(low-level file access)ï¼ä¾å¦å¨é©±å¨ç¨åºä¸å¯¹è®¾å¤æ件çç´æ¥è®¿é®ã
ããç³»ç»è°ç¨æ¯æä½ç³»ç»ç¸å
³çï¼å æ¤ä¸è¬æ²¡æè·¨æä½ç³»ç»çå¯ç§»æ¤æ§ã
ããç³»ç»è°ç¨åçå¨å
æ ¸ç©ºé´ï¼å æ¤å¦æå¨ç¨æ·ç©ºé´çä¸è¬åºç¨ç¨åºä¸ä½¿ç¨ç³»ç»è°ç¨æ¥è¿è¡æ件æä½ï¼ä¼æç¨æ·ç©ºé´å°å
æ ¸ç©ºé´åæ¢çå¼éãäºå®ä¸ï¼å³ä½¿å¨ç¨æ·ç©ºé´ä½¿ç¨åºå½æ°æ¥å¯¹æ件è¿è¡æä½ï¼å 为æ件æ»æ¯åå¨äºåå¨ä»è´¨ä¸ï¼å æ¤ä¸ç®¡æ¯è¯»åæä½ï¼é½æ¯å¯¹ç¡¬ä»¶(åå¨å¨)çæä½ï¼é½å¿
ç¶ä¼å¼èµ·ç³»ç»è°ç¨ãä¹å°±æ¯è¯´ï¼åºå½æ°å¯¹æ件çæä½å®é
ä¸æ¯éè¿ç³»ç»è°ç¨æ¥å®ç°çãä¾å¦Cåºå½æ°fwrite()å°±æ¯éè¿write()ç³»ç»è°ç¨æ¥å®ç°çã
ããè¿æ ·çè¯ï¼ä½¿ç¨åºå½æ°ä¹æç³»ç»è°ç¨çå¼éï¼ä¸ºä»ä¹ä¸ç´æ¥ä½¿ç¨ç³»ç»è°ç¨å¢ï¼è¿æ¯å 为ï¼è¯»åæ件é常æ¯å¤§éçæ°æ®(è¿ç§å¤§éæ¯ç¸å¯¹äºåºå±é©±å¨çç³»ç»è°ç¨æå®ç°çæ°æ®æä½åä½èè¨)ï¼è¿æ¶ï¼ä½¿ç¨åºå½æ°å°±å¯ä»¥å¤§å¤§åå°ç³»ç»è°ç¨ç次æ°ãè¿ä¸ç»æåç¼äºç¼å²åºææ¯ãå¨ç¨æ·ç©ºé´åå
æ ¸ç©ºé´ï¼å¯¹æ件æä½é½ä½¿ç¨äºç¼å²åºï¼ä¾å¦ç¨fwriteåæ件ï¼é½æ¯å
å°å
容åå°ç¨æ·ç©ºé´ç¼å²åºï¼å½ç¨æ·ç©ºé´ç¼å²åºæ»¡æè
åæä½ç»ææ¶ï¼æå°ç¨æ·ç¼å²åºçå
容åå°å
æ ¸ç¼å²åºï¼åæ ·çéçï¼å½å
æ ¸ç¼å²åºæ»¡æåç»ææ¶æå°å
æ ¸ç¼å²åºå
容åå°æ件对åºç硬件åªä»ã
ãã2ãåºå½æ°è°ç¨
ããæ åCåºå½æ°æä¾çæ件æä½å½æ°å¦fopen, fread, fwrite, fclose, fflush, fseekçï¼éå
å«å¤´æ件stdio.h.以fwrite为ä¾ï¼å
¶å½æ°åå为size_t fwrite(const void *buffer, size_t size, size_t item_num, FILE *pf)ï¼å
¶æä½å¯¹è±¡ä¸ºæ件æéFILE *pf,è¦æ³åä¸ä¸ªæ件ï¼å¿
é¡»å
以å¯åæéç¨fopenå½æ°æå¼ä¸ä¸ªæ件ï¼è·å¾ææå¼æ件çFILEç»ææépf,ä¾å¦pf=fopen(\â~/proj/filename\â, \âw\â)ãå®é
ä¸ï¼ç±äºåºå½æ°å¯¹æ件çæä½æç»æ¯éè¿ç³»ç»è°ç¨å®ç°çï¼å æ¤ï¼æ¯æå¼ä¸ä¸ªæ件æè·å¾çFILEç»ææéé½æä¸ä¸ªå
æ ¸ç©ºé´çæ件æ述符fdä¸ä¹å¯¹åºãåæ ·æç¸åºçé¢å®ä¹çFILEæéï¼stdin-standard input,stdout-standard output,stderr-standard error.
ããåºå½æ°è°ç¨é常ç¨äºåºç¨ç¨åºä¸å¯¹ä¸è¬æ件ç访é®ã
ããåºå½æ°è°ç¨æ¯ç³»ç»æ å
³çï¼å æ¤å¯ç§»æ¤æ§å¥½ã
ããç±äºåºå½æ°è°ç¨æ¯åºäºCåºçï¼å æ¤ä¹å°±ä¸å¯è½ç¨äºå
æ ¸ç©ºé´ç驱å¨ç¨åºä¸å¯¹è®¾å¤çæä½ã
温馨提示:答案为网友推荐,仅供参考