當前位置:首頁 » 編程語言 » c語言調用系統的命令

c語言調用系統的命令

發布時間: 2023-01-03 03:41:36

1. c語言中system("pause")是什麼作用和意思

system就是調用從程序中調用系統命令(和shell命令).
system("pause")就是從程序里調用「pause」命令;
而「pause」這個系統命令的功能很簡單,就是在命令行上輸出一行類似於「Press any key to exit」的字,等待用戶按一個鍵,然後返回.

2. c語言調用DOS命令怎麼寫

使用system函數即可。

1、system函數:
原型:int system(const char * command);
功能:執行 dos(windows系統) 或 shell(linux/Unix系統) 命令,參數字元串command為命令名;
說明:在windows系統中,system函數直接在控制台調用一個command命令。在Linux/Unix系統中,system函數會調用fork函數產生子進程,由子進程來執行command命令,命令執行完後隨即返回原調用的進程;
頭文件:stdlib.h;
返回值:命令執行成功返回0,執行失敗返回-1。
2、常式:

#include<stdio.h>
#include<stdlib.h>
intmain(){
system("delC:\123.txt");//在控制台中,執行命令delC:\123.txt,刪除C盤目錄下的123.txt文件
return0;
}

3. c語言 如何調用系統開始菜單的「運行」命令

你要彈出
系統開始菜單的「運行」的
對話窗,對嗎?
下面就是。
#include
#include
#include
#include
void
main()
{
keybd_event(VK_LWIN,0,0,0);
keybd_event(0x52,0,0,0);
keybd_event(VK_LWIN,0,KEYEVENTF_KEYUP,0);
}
編譯時必須鏈接
user32.lib
cl
prog.c
user32.lib
等於
Start->Run

4. C語言調用系統命令

用轉義字元,字元串中\''表示雙引號

5. 如何在C語言編程中調用linux系統終端下的命令

system(執行shell 命令)
相關函數 fork,execve,waitpid,popen

表頭文件 #include<stdlib.h>

定義函數 int system(const char * string);

函數說明 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 來確認執行成功。

附加說明 在編寫具有SUID/SGID許可權的程序時請勿使用system(),system()會繼承環境變數,通過環境變數可能會造成系統安全的問題。

範例 #include<stdlib.h>
main()
{
system(「ls -al /etc/passwd /etc/shadow」);
}

執行 -rw-r--r-- 1 root root 705 Sep 3 13 :52 /etc/passwd
-r--------- 1 root root 572 Sep 2 15 :34 /etc/shadow

6. 如何在C語言中調用shell命令

C語言中調用shell指令,根據調用指令目的,可以區分如下兩種情況:

一、需要shell指令執行某一功能,如創建文件夾,或者刪除文件夾等,程序中不關注shell指令的輸出,那麼可以使用system函數。

system函數聲明於stdlib.h, 功能為調用系統命令,形式為

int system(const char *cmd);

其中cmd為要執行的命令字元串,返回值為執行是否成功的標記。

比如在Linux下要刪除當前文件夾下的所有擴展名為a的文件,即*.a, 可以寫作

system("rm*.a-f");

二、不僅要執行shell命令,還需要得知運行的列印結果,並在程序中使用。

對於此,有兩種方案:

1、用system命令,將輸出重定向到一個txt文件中,執行後,再讀取txt文件,使用後刪除。

比如Linux下獲取剩餘內存的指令可以寫作:

system("free>result.txt");//結果重定向到result.txt中。
FILE*fp=fopen("result.txt","r");//打開文件。
intr;
while(fgetc(fp)!=' ');//忽略第一行。
fscanf(fp,"%*s%*d%*d%d",&r);//讀取第四個域的值,即剩餘內存值。
printf("剩餘內存為%dKB ",r);//列印結果。
fclose(fp);//關閉文件。
unlink("result.txt");//刪除臨時文件。

2、使用重定向,需要經過磁碟讀寫,還要刪除文件,相對低效。同時還有可能出現臨時文件和已有文件重名,導致誤刪數據的情況。 所以一般使用更方便快捷的方式,即調用popen。

FILE *popen(const char *cmd, const char *mode);

使用popen的功能和system類似,屬於方法1中執行命令和打開文件的一個組合。不過這里用到的文件是隱式的,並不會在系統中真正存在。返回的指針即結果文件指針。 當使用pclose關閉後,文件自動銷毀。

方法1中的例子,用popen實現如下:

FILE*fp=popen("free","r");//執行命令,同時創建管道文件。
intr;
while(fgetc(fp)!=' ');//忽略第一行。
fscanf(fp,"%*s%*d%*d%d",&r);//讀取第四個域的值,即剩餘內存值。
printf("剩餘內存為%dKB ",r);//列印結果。
pclose(fp);//關閉並銷毀管道文件。

三、注意事項:

雖然調用shell命令有時可以大大減少代碼量,甚至有千行代碼不如一句shell的說法,不過調用shell命令還是有局限性的:

1、使用shell命令會調用系統資源,效率偏低;

2、不同平台的shell指令不同,導致可移植性下降;

3、調用shell命令時會復制當前進程(fork),如果當前進程的資源佔有比較大,會導致瞬間資源佔用極大,甚至可能出現失敗。

所以,在編碼時,除非是測試性的代碼,否則在正式代碼中不建議使用shell。

7. 如何在C語言中調用cmd命令

在C語言中調用shell命令的方法實現。
C程序調用shell腳本共有兩種方法 :system()、popen(),分別如下:
system()
不用自己去創建進程,系統已經封裝了這一步,直接加入自己的命令即可
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命令以其簡略
高效的作用得到很很廣泛 的利用 ,下面是一個例子
例:在/tmp/testDir/目錄下有shell腳本tsh.sh,內容為

#!/bin/sh
wget $1
echo "Done!"
2)popen(char
*command,char *type)
popen()
會調用fork()產生 子歷程,然後從子歷程中調用/bin/sh -c來履行 參數command的指令。參數type可應用
「r」代表讀取,「w」代表寫入。遵循此type值,popen()會建立 管道連到子歷程的標准 輸出設備 或標准 輸入設備
,然後返回一個文件指針。隨後歷程便可利用 此文件指針來讀取子歷程的輸出設備 或是寫入到子歷程的標准 輸入設備 中。此外,所有應用 文
件指針(FILE*)操作的函數也都可以應用 ,除了fclose()以外。
返回值:若成功
則返迴文件指針,否則返回NULL,差錯 原因存於errno中。注意:在編寫具SUID/SGID許可權的程序時請盡量避免應用
popen(),popen()會繼承環境變數,通過環境變數可能會造成系統安全的問題。
例:C程序popentest.c內容如下:
#include<stdio.h>
main
{
FILE * fp;
charbuffer[80];
fp=popen(「~/myprogram/test.sh」,」r」);
fgets(buffer,sizeof(buffer),fp);
printf(「%s」,buffer);
pclose(fp);
}

熱點內容
安卓在哪裡找游戲 發布:2025-07-04 22:15:25 瀏覽:240
路由器訪問光貓 發布:2025-07-04 22:07:47 瀏覽:897
資料庫顯示語句 發布:2025-07-04 22:04:30 瀏覽:740
編程課道具 發布:2025-07-04 22:04:02 瀏覽:844
華為手機不是安卓什麼時候可以更新米加小鎮 發布:2025-07-04 22:01:37 瀏覽:785
飢荒伺服器搭建視頻 發布:2025-07-04 21:48:38 瀏覽:523
github上傳文件夾 發布:2025-07-04 21:29:22 瀏覽:1003
php課程學習中心 發布:2025-07-04 21:29:16 瀏覽:298
win7加密文件夾如何解密 發布:2025-07-04 21:25:24 瀏覽:555
為啥系統緩存的垃圾多呢 發布:2025-07-04 21:15:45 瀏覽:952