歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

Linux C編程與Shell編程在開發實用工具方面的相同點總結

以whois包中的mkpasswd的源碼mkpasswd.c文件為例,

兩者都需要做的事情:

(1)在程序運行前需要滿足其運行環境,包括聲明需要使用哪些庫哪些文件,例如C中的條件編譯,Shell編程中的部分條件判斷,如文件是否存在、是否可執行

(2)具備靈活性和可移植性:充分運用宏定義或全局變量(Shell專用),盡管C中許多宏定義不僅僅用於程序運行還用於程序移植,Shell中的許多全局變量也可用於腳本的移植

(3)都需要做參數(argument)聲明:允許用戶給程序傳入那些參數,不允許用戶傳入那些參數;哪些參數是不可同時使用,哪些參數必須同時使用

(4)定義程序是否接受長選項(--sargv)

(5)對用戶的輸入做過濾判斷處理,各種輸入情況的判斷處理、非法輸入和特殊字符的處理

(6)控制用戶使用邏輯和避免流程缺陷:保證用戶輸入不會超出程序設計預期,如輸入(字符串長度、數字長度)溢出,保證流程流向並正確處理和結束

(7)與操作系統結合緊密:符合操作系統規范和操作系統哲學,如恰當的函數返回值、程序退出返回值、接受管道、區分stdin、stdout、stderr等

(8)函數調用或外部程序調用,需要捕獲異常並處理異常,來自用戶或系統的中斷處理、信號處理

(9)執行核心方法前做好一切事情

(10)main函數盡可能的清晰精短、注意功能的拆分,保持函數原子性,盡可能的將函數復用,使用必要的縮進

(11)站在巨人的肩膀上,避免重復造輪子,使用並保持一致的編程風格

(12)程序運行完,擦好自己的屁股,程序運行前後充分與用戶交互

(13)適當賣弄一下自己的編程技巧和編程藝術

(14)有時需要注意語言國際化問題

(15)聲明協議、許可和較為詳細注釋、TODO,允許他人使用,改寫,再創作等

(16)接受bug,留下自己的聯系方式,哈哈!

Copyright © Linux教程網 All Rights Reserved