A. 在Linux系統上使用c語言編程 - Hello World
C語言和 Linux 系統密切相關,因此在Linux系統上用C編程是一件非常自然的事。大部分的Linux kernel是用C寫的,很多用戶程序也是用C寫的,比如GTK(Gnome和XFCE使用的圖形庫)。很多嵌入式系統和主機系統也是用C寫的。因此,學習C將使我們具備解決Linux系統問題的能力。
C語言有40多年的 歷史 ,由Brian Kernighan, Dennis Ritchie 和 Ken Thompson 在貝爾實驗室創建。最初的操作系統Unix是用匯編語言編寫的,因此有很多不便,當將Unix移植到PDP-11主機時,C語言被作為重新改寫Unix系統的程序語言。1978年,Kernighan 和 Ritchie 編寫了 「The C Programming Language」,推薦您閱讀它。
C語言的編譯過程如下:
在Linux上檢查編譯器的安裝:
gcc -v
ld -v
第一個C語言程序:0001.hello.world.c
----------------------------------
#include
int main()
{
printf("Hello, world! ");
return 0;
}
--------------------------------------
編譯:
gcc -o ./exes/0001.hello.world 0001.hello.world.c
運行
./exes/0001.hello.world
B. linux下怎麼用C語言開發界面程序
選擇1:
去QT的官方網站,裡面提供免費下載,主要下載:如果你只用C的話,下載QT圖形開發C的編程庫,和開發文檔(相當於windows的MSDN),如果你用C++的話,就下載QT圖形開發C++的編程庫,和開發文檔.
選擇2:
去GTK的官方網站,面裡面提供免費下載,主要下載:如果你只用C的話,下載GTK圖形開發C的編程庫,和開發文檔(相當於windows的MSDN),如果你用C++的話,就下載GTK圖形開發C++的編程庫,和開發文檔.
選擇3:
如果你需要資料庫:去MYSQL的官方網站,面裡面提供免費下載,主要下載:如果你只用C的話,下載MYSQL資料庫開發C的編程庫,和開發文檔(相當於windows的MSDN),如果你用C++的話,就下載MYSQL資料庫開發C++的編程庫,和開發文檔
C. linux下c語言編程
實在點,給你些命令操作操作,不過好象有點多,哈哈
Linux/Unix常用命令
1、目錄操作
和DOS相似,UNIX採用樹型目錄管理結構,由根目錄(/)開始一層層將子目錄建下去,各子目錄以 / 隔開。用戶login後,工作目錄的位置稱為 home directory,由系統管理員設定。『~』符號代表自己的home directory,例如 ~/myfile 是指自己home目錄下myfile這個文件。
(1)顯示目錄文件 ls
執行格式: ls [-atFlgR] [name] (name可為文件或目錄名稱)
例: ls 顯示出當前目錄下的文件
ls -a 顯示出包含隱藏文件的所有文件
ls -t 按照文件最後修改時間顯示文件
ls -F 顯示出當前目錄下的文件及其類型
ls -l 顯示目錄下所有文件的許可權、擁有者、文件大小、修改時間及名稱
ls -lg 同上
ls -R 顯示出該目錄及其子目錄下的文件
注:ls與其它命令搭配使用可以生出很多技巧(最簡單的如"ls -l | more"),更多用法請輸入ls --help查看,其它命令的更多用法請輸入 命令名 --help 查看.
(2)建新目錄 mkdir
執行格式: mkdir directory-name
例: mkdir dir1 (新建一名為dir1的目錄)
(3)刪除目錄 rmdir
執行格式: rmdir directory-name 或 rm directory-name
例:rmdir dir1 刪除目錄dir1,但它必須是空目錄,否則無法刪除
rm -r dir1 刪除目錄dir1及其下所有文件及子目錄
rm -rf dir1 不管是否空目錄,統統刪除,而且不給出提示,使用時要小心
(4) 改變工作目錄位置 cd
執行格式: cd [name]
例: cd 改變目錄位置至用戶login時的working directory
cd dir1 改變目錄位置,至dir1目錄
cd ~user 改變目錄位置,至用戶的working directory
cd .. 改變目錄位置,至當前目錄的上層目錄
cd ../user 改變目錄位置,至上一級目錄下的user目錄
cd /dir-name1/dir-name2 改變目錄位置,至絕對路徑(Full path)
cd - 回到進入當前目錄前的上一個目錄
(5)顯示當前所在目錄pwd
執行格式: pwd
(6)查看目錄大小
執行格式: [-s] directory
例: dir1 顯示目錄dir1及其子目錄容量(以kb為單位)
-s dir1 顯示目錄dir1的總容量
(7)顯示環境變數
echo $HOME 顯示家目錄
echo $PATH 顯示可執行文件搜索路徑
env 顯示所有環境變數(可能很多,最好用"env | more","env | grep PATH"等)
(8)修改環境變數,在bash下用export,如:
export PATH=$PATH:/usr/local/bin
想知道export的具體用法,可以用shell的help命令:help export
2、文件操作
(1)查看文件(可以是二進制的)內容 cat
執行格式:cat filename或more filename 或cat filename|more
例: cat file1 以連續顯示方式,查看文件file1的內容
more file1
或 cat file1|more 以分頁方式查看文件的內容
(2)刪除文件 rm
執行格式: rm filename
例: rm file?
rm f*
(3)復制文件 cp
執行格式: cp [-r] source destination
例: cp file1 file2 將file1復製成file2
cp file1 dir1 將file1復制到目錄dir1
cp /tmp/file1 將file1復制到當前目錄
cp /tmp/file1 file2 將file1 復制到當前目錄名為file2
cp -r dir1 dir2 (recursive )復制整個目錄。
(4)移動或更改文件、目錄名稱mv
執行格式: mv source destination
例: mv file1 file2 將文件file1,更名為file2
mv file1 dir1 將文件file1,移到目錄dir1下
mv dir1 dir2
(5)比較文件(可以是二進制的)或目錄的內容 diff
執行格式: diff [-r] name1 name2 (name1、name2同為文件或目錄)
例: diff file1 file2 比較file1與file2的不同處
diff -r dir1 dir2 比較dir1與dir2的不同處
(6)文件中字元串的查找 grep
執行格式: grep string file
例: grep abc file1 查找並列出串abc所在的整行文字
(7)文件或命令的路徑尋找
執行格式一:whereis command 顯示命令的路徑
執行格式二:which command 顯示路徑及使用者所定義的別名
執行格式三:whatis command 顯示命令的功能摘要
(8)建立文件或目錄的鏈接 ln
例: ln source target1 建立source文件(已存在)的硬鏈接,命名為target1
ln -s source target2 建立source文件的符號鏈接,命名為target2
文件編輯器vi
vi是在UNIX 上被廣泛使用的中英文編輯軟體。vi是visual editor的縮寫,是UNIX提供給用戶的一個窗口化編輯環境。
進入vi,直接執行vi編輯程序即可。
例:$vi test.c
顯示器出現vi的編輯窗口,同時vi會將文件復制一份至緩沖區(buffer)。vi先對緩沖區的文件進行編輯,保留在磁碟中的文件則不變。編輯完成後,使用者可決定是否要取代原來舊有的文件。
1、vi的工作模式
vi提供二種工作模式:輸入模式(insert mode)和命令模式(command mode)。使用者進入vi後,即處在命令模式下,此刻鍵入的任何字元皆被視為命令,可進行刪除、修改、存檔等操作。要輸入信息,應轉換到輸入模式。
(1)命令模式
在輸入模式下,按ESC可切換到命令模式。命令模式下,可選用下列指令離開vi:
:q! 離開vi,並放棄剛在緩沖區內編輯的內容
:wq 將緩沖區內的資料寫入磁碟中,並離開vi
:ZZ 同wq
:x 同wq
:w 將緩沖區內的資料寫入磁碟中,但並不離開vi
:q 離開vi,若文件被修改過,則要被要求確認是否放棄修改的內容,此指令可與:w配合使用
(2)命令模式下游標的移動
H 左移一個字元
J 下移一個字元
K 上移一個字元
L 右移一個字元
0 移至該行的首
$ 移至該行的末
^ 移至該行的第一個字元處
H 移至窗口的第一列
M 移至窗口中間那一列
L 移至窗口的最後一列
G 移至該文件的最後一列
W, W 下一個單詞 (W 忽略標點)
B, B 上一個單詞 (B 忽略標點)
+ 移至下一列的第一個字元處
- 移至上一列的第一個字元處
( 移至該句首
) 移至該句末
{ 移至該段首
} 移至該段末
NG 移至該文件的第n列
N+ 移至游標所在位置之後第n列
n- 移至游標所在位置之前第n列
(3)輸入模式
輸入以下命令即可進入vi輸入模式:
a(append) 在游標之後加入資料
A 在該行之末加入資料
i(insert) 在游標之前加入資料
I 在該行之首加入資料
o(open) 新增一行於該行之下,供輸入資料用
O 新增一行於該行之上,供輸入資料用
dd 刪除當前游標所在行
X 刪除當前游標字元
x 刪除當前游標之前字元
U 撤消
• 重做
F 查找
ESC鍵 離開輸入模式
GNU C編譯器
LINUX上可用的C編譯器是GNU C編譯器,它建立在自由軟體基金會編程許可證的基礎上,因此可以自由發布。
LINUX 上的GNU C編譯器(GCC)是一個全功能的ANCI C兼容編譯器。下面介紹GCC和一些GCC編譯器最常用的選項。
1、使用GCC
通常後跟一些選項和文件名來使用GCC編譯器。GCC命令的基本用法如下:
gcc [options] [filenames]
命令行選項指定的編譯過程中的具體操作
2、GCC常用選項
GCC有超過100個的編譯選項可用,這些選項中的許多可能永遠都不會用到,但一些主要的選項將會頻繁使用。很多的GCC選項包括一個以上的字元,因此必須為每個選項指定各自的連字元,並且就像大多數LINUX 命令一樣不能在一個單獨的連字元後跟一組選項。例如:
gcc test.c
編譯成功後,當前目錄下就產生了一個可執行文件a.out。
也可用-o選項來為即將產生的可執行文件指定一個文件名來代替a.out。例如:
gcc -o count count.c
此時得到的可執行文件就不再是a.out,而是count。
3、執行文件
格式: ./可執行文件名
例:./a.out
./count
D. 在Linux系統中,如何運行一個C語言程序
1、打開kali linux的終端。創建一個文件並命名為test.c。在終端輸入:touch test.c。
E. 《C程序設計語言第2版·新版》pdf下載在線閱讀全文,求百度網盤雲資源
《C程序設計語言(第2版·新版)》([美] Brian W. Kernighan)電子書網盤下載免費在線閱讀
鏈接: https://pan..com/s/1txJqYzmjYS-BSw43eLWrnQ
書名:C程序設計語言(第2版·新版)
作者:[美] Brian W. Kernighan
譯者:徐寶文
豆瓣評分:9.4
出版社:機械工業出版社
出版年份:2004-1
頁數:258
內容簡介:
在計算機發展的歷史上,沒有哪一種程序設計語言像C語言這樣應用廣泛。本書作者是C語言的設計者之一Dennis M. Ritchie和著名計算機科學家Brian W. Kernighan合著的一本介紹C語言的權威經典著作。我們現在見到的大量論述C語言程序設計的教材和專著均以此書為藍本。
原著第1版中介紹的C語言成為後來廣泛使用的C語言版本——標准C的基礎。人們熟知的「hello,World"程序就是由本書首次引入的,現在,這一程序已經成為眾多程序設計語言入門的第一課。原著第2版根據1987年制定的ANSIC標准做了適當的修訂.引入了最新的語言形式,並增加了新的示例,通過簡潔的描述、典型的示例,作者全面、系統、准確地講述了C語言的各個特性以及程序設計的基本方法。
對於計算機從業人員來說,本書是一本必讀的程序設計語言方面的參考書。
作者簡介:
Brian W. Kernighan,貝爾實驗室計算科學研究中心高級研究人員,著名的計算機科學家。參加了UNIX系統、C語言、AWK語言和許多其他系統的開發,同時出版了許多在計算機領域具有影響的著作,如《The Elements of Programming Style》《The Practice of Programming》《The UNIX Programming Environment》《The AWK Language》《Software Tools》等。
Dennis M. Ritchie,1967年加入貝爾實驗室。他和 Ken L. Thompson 兩人共同設計並實現的C語言改變了程序設計語言發展的軌跡,是程序設計語言發展過程中的一個重要里程碑。與此同時,他們還設計並實現了UNIX操作系統。正是由於這兩項巨大貢獻,Dennis M. Ritchie 於1983年獲得了計算機界的最高獎——圖靈獎。此外,他還獲得了ACM、IEEE、貝爾實驗室等授予的多種獎項.。
F. 誰有嵌入式linuxC語言應用程序設計pdf版
尚觀-嵌入式高級C語言進階培訓
C語言概述-01C語言概念、發展歷史、特點http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24675555
C語言概述-02C基本程序結構等http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24679413
C語言概述-03C語言第2個程序第3個程序http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24679415
C語言概述-04C程序開發過程http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24676741
C語言概述-05C語言開發常見錯誤分析http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24676797
C語言概述-06C語言 開發語言和開發工具的關系http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24684950
C編程基礎-01C語言基本數據類型http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24683553
C編程基礎-02常量和變數http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24688154
C編程基礎-03const類型修飾符概念http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24677311
2C編程基礎-03const類型修飾符實例
http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24720572
C編程基礎-04volatile類型修飾符http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24685486
C編程基礎-05extern,static存儲http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24677519
C編程基礎-06register存儲類型說明符http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24685644
C編程基礎-07auto存儲類型說明符http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24685678
C編程基礎-08操作符-算術操作符http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24677935
C編程基礎-09操作符-sizeof操作符http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24686154
C編程基礎-09操作符-關系邏輯操作符http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24678079
C編程基礎-09操作符-位運算操作符http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24686402
C編程基礎-10表達式http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24678315
C編程基礎-11if條件判斷結構http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24686640
C編程基礎-12switch條件判斷結構http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24686726
C編程基礎-13for循環結構http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24686792
C編程基礎-14while循環結構http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24678685
C編程基礎-15跳轉語句http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24679987
C編程基礎-16模塊化設計方法http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24678881
C編程基礎-17函數的聲明和定義http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24687236
C編程基礎-18函數的調用http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24679113
C編程基礎-19遞歸函數http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24679189
C編程基礎-20函數返回值http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24680021
C編程進階-1數組http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24688354
C編程進階-1字元串http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24688500
C編程進階-3指針http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24691778
C編程進階-4函數指針http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24680581
C編程進階-5動態類型分配http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24688820
C編程進階-6指針常見錯誤http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24688856
C編程進階-7指針與數組http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24691814
C編程進階-8編譯預處理http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24682609
C編程進階-9結構體基礎http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24682671
C編程進階-10鏈表http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24683653
C編程進階-11共用體http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24682755
C編程進階-12位段http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24690968
C編程進階-13枚舉http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24690978
C編程進階-14文件http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24691004
C編程總結http://you.video.sina.com.cn/pg/topicdetail/topicPlay.php?tid=3463501&uid=1320045357&t=1#24691044
G. 在Linux下用C語言編程
4。守護進程的創建
如果你在DOS時代編寫過程序,那麼你也許知道在DOS下為了編寫一個常駐內存的程序我們要編寫多少代碼了.相反如果在Linux下編寫一個"常駐內存"的程序卻是很容易的.我們只要幾行代碼就可以做到. 實際上由於Linux是多任務操作系統,我們就是不編寫代碼也可以把一個程序放到後台去執行的.我們只要在命令後面加上&符號SHELL就會把我們的程序放到後台去運行的. 這里我們"開發"一個後台檢查郵件的程序.這個程序每個一個指定的時間回去檢查我們的郵箱,如果發現我們有郵件了,會不斷的報警(通過機箱上的小喇叭來發出聲音). 後面有這個函數的加強版本加強版本
後台進程的創建思想: 首先父進程創建一個子進程.然後子進程殺死父進程(是不是很無情?). 信號處理所有的工作由子進程來處理.
#include
#include
#include
#include
#include
#include
#include
/* Linux 的默任個人的郵箱地址是 /var/spool/mail/用戶的登錄名 */
#define MAIL "/var/spool/mail/hoyt"
/* 睡眠10秒鍾 */
#define SLEEP_TIME 10
main(void)
{
pid_t child;
if((child=fork())==-1)
{
printf("Fork Error:%s\n",strerror(errno));
exit(1);
}
else if(child>0)
while(1);
if(kill(getppid(),SIGTERM)==-1)
{
printf("Kill Parent Error:%s\n",strerror(errno));
exit(1);
}
{
int mailfd;
while(1)
{
if((mailfd=open(MAIL,O_RDONLY))!=-1)
{
fprintf(stderr,"%s","\007");
close(mailfd);
}
sleep(SLEEP_TIME);
}
}
}
你可以在默認的路徑下創建你的郵箱文件,然後測試一下這個程序.當然這個程序還有很多地方要改善的.我們後面會對這個小程序改善的,再看我的改善之前你可以嘗試自己改善一下.比如讓用戶指定郵相的路徑和睡眠時間等等.相信自己可以做到的.動手吧,勇敢的探險者.
好了進程一節的內容我們就先學到這里了.進程是一個非常重要的概念,許多的程序都會用子進程.創建一個子進程是每一個程序員的基本要求!