當前位置:首頁 » 操作系統 » c執行linux命令

c執行linux命令

發布時間: 2023-09-03 15:05:09

linux下怎樣用c語言調用shell命令

不要shell執行結果用system, 要執行結果用popen

❷ Linux中,運行一個C語言程序如何運行

1、打開kali linux的終端。創建一個文件並命名為test.c。在終端輸入:touch test.c。

❸ linux下如何用c語言調用shell命令

參數type可使用「r」代表讀取,「w」代表寫入。依照此type值,popen()會建立管道連到子進程的標准輸出設備或標准輸入設備,然後返回一個文件指針。隨後進程便可利用此文件指針來讀取子進程的輸出設備或是寫入到子進程的標准輸入設備中。此外,所有使用文件指針(FILE*)操作的函數也都可以使用,除了fclose()以外。 返回值:若成功則返迴文件指針,否則返回NULL,錯誤原因存於errno中。 注意:在編寫具SUID/SGID許可權的程序時請盡量避免使用popen(),popen()會繼承環境變數,通過環境變數可能會造成系統安全的問題。 例:C程序popentest.c內容如下: #include main() { FILE * fp; charbuffer[80]; fp=popen(「~/myprogram/test.sh」,」r」); fgets(buffer,sizeof(buffer),fp); printf(「%s」,buffer); pclose(fp); } 執行結果如下: xiakeyou@ubuntu:~/myprogram$ vim popentest.c xiakeyou@ubuntu:~/myprogram$ gcc popentest.c -o popentest xiakeyou@ubuntu:~/myprogram$ ./popentest /home/d/e/xiakeyou xiakeyou@ubuntu:~/myprogram$ 只是偶能力可能有點有限,沒有太看懂。直接用system()倒是腳本可是執行,只是返回值卻是一塌糊塗,試了多次也沒有找到什麼規律。不免又看了一下上面的那篇博文,得到一些啟發,可以這樣來實現: 先將腳本的返回值利用 echo > XXXXX 輸出到一個本地文件中 當需要這個返回值是,可是通過C語言的文件操作函數來直接從文件中讀取 後來一想,這應該就是上文中POPEN的實現方法! C程序調用shell腳本共有三種法子 :system()、popen()、exec系列函數 system() 不用你自己去產生進程,它已經封裝了,直接加入自己的命令exec 需要你自己 fork 進程,然後exec 自己的命令 popen() 也可以實現執行你的命令,比system 開銷小 1)system(shell命令或shell腳本路徑); system()會調用fork()產生 子歷程,由子歷程來調用/bin/sh-c string來履行 參數string字元串所代表的命令,此命令履行 完後隨即返回原調用的歷程。在調用system()期間SIGCHLD 信號會被暫時擱置,SIGINT和SIGQUIT 信號則會被漠視 。 返回值:如果system()在調用/bin/sh時失敗則返回127,其他失敗原因返回-1。若參數string為空指針(NULL),則返回非零值。 如果 system()調用成功 則最後會返回履行 shell命令後的返回值,但是此返回值也有可能為system()調用/bin/sh失敗所返回的127,因 此最好能再反省 errno 來確認履行 成功 。 system命令以其簡略 高效的作用得到很很廣泛 的利用 ,下面是一個例子 例:在~/test/目錄下有shell腳本test.sh,內容為 #!bin/bash #test.sh echo hello 在同層目錄下新建一個c文件system_test.c,內容為: #include int main() { system("~/test/test.sh"); } 履行 效果 如下: [root@localhost test]$gcc system_test.c -o system_test [root@localhost test]$./system_test hello [root@localhost test]$ 2)popen(char *command,char *type) popen()會調用fork()產生 子歷程,然後從子歷程中調用/bin/sh -c來履行 參數command的指令。參數type可應用 「r」代表讀取,「w」代表寫入。遵循此type值,popen()會建立 管道連到子歷程的標准 輸出設備 或標准 輸入設備 ,然後返回一個文件指針。隨後歷程便可利用 此文件指針來讀取子歷程的輸出設備 或是寫入到子歷程的標准 輸入設備 中。此外,所有應用 文 件指針(FILE*)操作的函數也都可以應用 ,除了fclose()以外。 返回值:若成功 則返迴文件指針,否則返回NULL,差錯 原因存於errno中。

❹ 在linux下用C怎麼將「cat /proc/mtd」這條命令早終端列印出來,並執行該命令的結果。

根據你的意思,可以這樣

#include<stdio.h>
#include<stdlib.h>
int main(){
system("./`cat /proc/mtd`");
return 0;
}

system() 函數就是調用shell。
`cat /proc/mtd` 就是取得這個命令的執行結果
./`cat /proc/mtd` 就是執行這個結果。

但是 在我的系統中執行cat /proc/mtd ,
cat: /proc/mtd: 沒有那個文件或目錄

所以沒有辦法測試,但是這個方法是對的。如果cat /proc/mtd的結果是很多個的話,最好加上cut命令 來作為取捨

❺ linux怎麼運行c文件

linux怎麼運行c文件呢,下面就讓我們來看看吧。
1、安裝gccg++編譯工具。


以上就是小編的分享,希望能幫助的大家。
本文章基於ThinkpadE15品牌、centos7系統撰寫的。

❻ linux下如何用c語言調用shell命令

可以使用system函數調用。
system("shell_command");
可以實現在shell中調用shell_command的作用。
比如設置網卡IP為192.168.1.100,可以寫作
system("ifconfig
eth0
192.168.1.100");

❼ Linux中,運行一個C語言程序如何運行

在Linux中,可以使用gcc編譯器編譯C語言程序,生成可執行文件,並最終執行。
具體步驟如下:
1、編譯。
由.c文件生成.o文件,寫作:
gcc a.c -o a.o -c這個命令可以將a.c編譯成a.o。
如果存在多個文件,可以逐個編譯,即a.c
b.c...
生成a.o
b.o...等。
2、鏈接。
由.o文件生成可執行文件,寫作:
gcc a.o b.o c.o -o a.out這個命令將a.o
b.o
c.o三個目標文件,生成可執行文件a.out。
3、執行。
調用命令:
./a.out即可執行生成的可執行文件a.out。
4、注意事項:
(1)
當文件較少時,可以省略目標文件步驟,編譯鏈接一步執行,如:
gcc a.c b.c c.c -o a.out(2)
提供的示例為最基礎的編譯功能,在實際應用中gcc有很豐富的編譯選項,根據需求進行添加。
(3)
當項目包含文件較多時,可以使用makefile進行管理。

熱點內容
b樹磁碟存儲 發布:2025-01-31 19:42:53 瀏覽:837
聯想小新air15怎麼配置環境 發布:2025-01-31 19:06:57 瀏覽:968
什麼配置玩3a 發布:2025-01-31 19:05:22 瀏覽:586
phpoa系統 發布:2025-01-31 18:58:42 瀏覽:10
值e的編程 發布:2025-01-31 18:57:06 瀏覽:977
安卓手機的軟體認證在哪裡 發布:2025-01-31 18:57:01 瀏覽:535
android彈出來 發布:2025-01-31 18:56:56 瀏覽:232
辦公室白領新解壓方法 發布:2025-01-31 18:55:23 瀏覽:558
摩斯密碼短長是什麼意思 發布:2025-01-31 18:50:17 瀏覽:587
類的訪問修飾 發布:2025-01-31 18:42:46 瀏覽:933