導航:首頁 > 編程語言 > linuxc語言代碼關機

linuxc語言代碼關機

發布時間:2022-09-27 23:28:54

⑴ 一個linux下C語言的問題,求大神解答!!

不改變代碼的話,估計叫你溢出堆棧,他給你的編譯命令行也把堆棧保護關掉了:no-stack-protector
GetInput執行完的返回地址,要被改成NeverExecutes的地址,然後返回就到了NeverExecutes
而且gets沒有檢查長度,所以你給他多少他就寫多少,寫到buffer外他也不檢查,你只要一直輸入把返回地址給正好覆蓋掉
不過有些字元不好輸入,估計再用其他程序往stdin里寫比較好

⑵ C語言關機命令是什麼

C programming code for Windows XP
#include <stdio.h>#include <stdlib.h> int main(){ char ch; printf("Do you want to shutdown your computer now (y/n)\n"); scanf("%c", &ch); if (ch == 'y' || ch == 'Y') system("C:\\WINDOWS\\System32\\shutdown -s"); return 0;}C programming code for Windows 7
#include <stdio.h>#include <stdlib.h> int main(){ system("C:\\WINDOWS\\System32\\shutdown /s"); return 0;}To shutdown immediately use "C:\\WINDOWS\\System32\\ shutdown /s /t 0". To restart use /r instead of /s.C programming code for Ubuntu Linux
#include <stdio.h> int main() { system("shutdown -P now"); return 0;}

⑶ linux下,編寫一個c語言程序實現...(詳細見正文)!急!

//沒有統計功能,要的話再Hi我

/*
程序功能:查詢IP
使用方法:
將IP庫保存為c:\data.txt,將要查詢的IP保存為c:\ip.txt;編譯好本程序後,運行後產生c:\result.txt結果文件

程序BUG:data文件最後需要以兩個換行結束

*/

#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <stdlib.h>

#define TOTAL_INFO 100

extern void str_init(char* str1, char* str2, char* str3, char* str4); //字元串初始化函數
extern void str_init_total_info(char *str);
extern int read_file(FILE *fp, char *str); //讀取IP
extern void read_dt2_next(FILE *fp, char *str); //單獨保存資料庫中第二IP段,最大IP范圍
extern void next_line_data(FILE *fp); //專用:跳到下一行
extern void next_line_ip(FILE *fp);
extern int total_line(FILE *fp); //檢測文件總行數

int main(int argc, char *argv[])
{

FILE *fp_data, *fp_ip, *fp_result;

char t_dt1[5], t_dt2[5], t_dt3[5], t_dt4[5];
char t_ip1[5], t_ip2[5], t_ip3[5], t_ip4[5]; //4個IP段,便於比較和保存
char t_dt2_next[5]; //保存資料庫中同一行第二IP段,最大IP范圍
char addr_ip[50]; //輸出處理後的IP歸屬地
char temp;
char ip_total_info[30];

int flag_loop_ip=1, flag_loop_data=1;
int i=0, j=0, k=0, flag_complete=0;
int len_dt1, len_dt2;
int len_ip1, len_ip2;
int total_line_nu=0;

str_init(t_dt1, t_dt2, t_dt3, t_dt4); //初始化:將字元串以'\0'填充
str_init(t_ip1, t_ip2, t_ip3, t_ip4);
str_init_total_info(ip_total_info);

fp_data=fopen("c:\\data.txt", "r");
fp_ip=fopen("c:\\ip.txt", "r");
fp_result=fopen("c:\\result.txt", "a+"); //追加文件,若存在

total_line_nu=total_line(fp_ip); //獲取ip.txt文件的總行數

fseek(fp_ip, 0, SEEK_SET); //將fp_ip移動到文件開頭

for(i=0; i<total_line_nu; i++) //外層總循環,由ip.txt文件的總行數控制
{

flag_complete=0;

len_ip1=read_file(fp_ip, t_ip1);
len_ip2=read_file(fp_ip, t_ip2);
read_file(fp_ip, t_ip3);
read_file(fp_ip, t_ip4);

for(j=0; flag_complete == 0; j++) //內層總循環,控制條件:是否完成一次比較
{
len_dt1=read_file(fp_data, t_dt1); //讀取各段IP,並保存各段IP長度
len_dt2=read_file(fp_data, t_dt2);
read_file(fp_data, t_dt3);
read_file(fp_data, t_dt4);

read_dt2_next(fp_data, t_dt2_next); //單獨保存資料庫中第二IP段,最大IP范圍

fseek(fp_data,9,SEEK_CUR); //文件指針後移9位,指向漢字將要出現的地方

fgets(addr_ip, 20 , fp_data); //單獨保存IP信息(漢字)

for(k=0; (temp=fgetc(fp_data)) != '\n'; k++) //此處為了使主程序的內層循環自動換行
{

}

// fseek(fp_data,2,SEEK_CUR); //使fp_data指向下一行

// next_line(fp_data);

if(len_dt1==len_ip1 && len_dt2==len_ip2) //如果各段IP都一樣長,則比較
{
if( !strcmp(t_dt1, t_ip1) ) //如果第一段的IP內容一樣,比較第二段
{
if( ((strcmp(t_dt2, t_ip2)) <= 0) && ((strcmp(t_dt2_next, t_ip2)) >= 0) )
{ //如果要查詢IP在這個IP段(BUG為:最小范圍和最大范圍個數不一樣)

flag_complete = 1; //完成一次循環

strcpy(ip_total_info,t_ip1); //整理要輸出的信息
strcat(ip_total_info,".");
strcat(ip_total_info,t_ip2);
strcat(ip_total_info,".");
strcat(ip_total_info,t_ip3);
strcat(ip_total_info,".");
strcat(ip_total_info,t_ip4);
strcat(ip_total_info,"\t");
strcat(ip_total_info,addr_ip);

fputs(ip_total_info, fp_result);

fseek(fp_data, 0, SEEK_SET); //將fp_data移動到文件開頭

}
}

}

//不滿足條件時返回循環,因為readfile函數的設置,不用再重置到下一行

}

}

// printf("ftell:%d\n",ftell(fp_data)); //獲取文件流的讀取位置

// fseek(fp,2,SEEK_CUR); //

fclose(fp_data);
fclose(fp_ip);
fclose(fp_result);
return 0;
}

void str_init(char *str1, char *str2, char *str3, char *str4)
{
int i;
for(i=0; i<5; i++)
{
str1[i]='\0';
str2[i]='\0';
str3[i]='\0';
str4[i]='\0';
}
}

///////////////////////////////////////////////////////////////////////////////////////////////////
int read_file(FILE *fp, char* str)
{
int i, len;
char t;

for(i=0; ( (str[i]=fgetc(fp)) >= '0') && (str[i] <= '9'); i++) //從文件中讀取字元串,直到非數字結束
{
}

str[i] = '\0'; //將最後讀取的非數字填充掉

len=strlen(str);
return len;

}

void read_dt2_next(FILE *fp, char *str) //單獨保存資料庫中第二IP段,最大IP范圍
{
char temp;
int flag=0,i;

for (i=0; flag != 1; i++ ) //直到找到第二段最大范圍IP
{
temp = fgetc(fp);
if(temp == '.') //第二段IP以第一段的.開始
{
flag = 1;
}
}

//保存找到的第二段最大范圍IP
for(i=0; ( (str[i]=fgetc(fp)) >= '0') && (str[i] <= '9'); i++) //從文件中讀取字元串,直到非數字結束
{
}

str[i] = '\0'; //將最後讀取的非數字填充掉

}

void next_line_data(FILE *fp) //使文件指針指向下一行
{
char t;
t=fgetc(fp);
while(t != '\n')
{
// printf("temp t:%c\n", t);
// system("pause");

t=fgetc(fp);
}

t=fgetc(fp);
if (t != '\n')
{
fseek(fp,-1,SEEK_CUR);
}
else
{
t=getc(fp);
if (t != '\n')
{
fseek(fp,-1,SEEK_CUR);
}
}
//fseek(fp,4,SEEK_CUR); //精確定位到下下一行,因為兩行之間有一個空白行
//t=fgetc(fp); //讀取換行符,使文件指針指向下一行

}

void next_line_ip(FILE *fp) //使文件指針指向下一行
{
char t;
t=fgetc(fp);
while(t != '\n')
{
// printf("temp t:%c\n", t);
// system("pause");

t=fgetc(fp);
}
fseek(fp,2,SEEK_CUR); //精確定位到下下一行,因為兩行之間有一個空白行
//t=fgetc(fp); //讀取換行符,使文件指針指向下一行

}

int total_line(FILE *fp) //檢測總行數
{
char t1, t2;
int flag=0, flag2=0;
t1 = fgetc(fp);
t2 = fgetc(fp);
while (t1 != EOF) //到達文件尾或出錯返回EOF
{
if( (t1 == '\n') && (t1=fgetc(fp) != EOF))
{
flag2=0;
flag+=1;
}
else flag2=1;

t1 = fgetc(fp);

}
flag=flag+flag2;
return flag;

}

void str_init_total_info(char *str)
{
int i;
for(i=0; i<TOTAL_INFO; i++)
{
str[i]='\0';
}
}

⑷ C語言關機代碼

其實這個程序是調用了C:\windows\system32\shutdown.exe
這個文件的

Windows XP系統通過一個名為Shutdown.exe的程序來完成關機操作(位置在Windows\System32下),一般情況下XP的關機是由關機程序shutdown.exe來實現的,關機的時候調用shutdown.exe。由此可知要阻止強行關機就是要取消對shutdown.exe的調用。
shutdown.exe -a 取消關機

shutdown.exe -f 強行關閉應用程序。

shutdown.exe -l 注銷當前用戶。

shutdown.exe -s -t 時間 設置關機倒計時。

shutdown.exe -c"消息內容" 輸入關機對話框中的消息內容(不能超127個字元)。

比如你的電腦要在23:00關機,可以選擇「開始→運行」,輸入「at 23:00 Shutdown -s」,這樣,到了23點,電腦就會出現「系統關機」對話框,默認有30秒鍾的倒計時並提示你保存工作。如果你想以倒計時的方式關機,可以輸入「Shutdown.exe -s -t 3600」,這里表示60分鍾後自動關機,「3600」代表60分鍾。

如果想取消的話,可以在運行中輸入「shutdown -a」。另外輸入「shutdown -i」,則可以打開設置自動關機對話框,對自動關機進行設置。

Windows XP的關機是由Shutdown.exe程序來控制的,位於WindowsSystem32文件夾中。如果想讓Windows 2000也實現同樣的效果,可以把Shutdown.exe復制到系統目錄System32下

代碼:
main()
{
system("shutdown -s -t 3600");
}

----------------------------------------------------------------------------------------------------------------------------

C語言中命令如下:
重啟

#include <stdlib.h>
main()
{
system("shutdown /r");
}

關機

#include <stdlib.h>
main()
{
system("shutdown /s");
}

XP系統下
用shutdown 命令
用法: SHUTDOWN [-i | -l | -s | -r | -a] [-f] [-m \\computername] [-t xx] [-c "co
mment"] [-d up:xx:yy]

沒有參數 顯示此消息(與 ? 相同)
-i 顯示 GUI 界面,必須是第一個選項
-l 注銷(不能與選項 -m 一起使用)
-s 關閉此計算機
-r 關閉並重啟動此計算機
-a 放棄系統關機
-m \\computername 遠程計算機關機/重啟動/放棄
-t xx 設置關閉的超時為 xx 秒
-c "comment" 關閉注釋(最大 127 個字元)
-f 強制運行的應用程序關閉而沒有警告
-d [u][p]:xx:yy 關閉原因代碼
u 是用戶代碼
p 是一個計劃的關閉代碼
xx 是一個主要原因代碼(小於 256 的正整數)
yy 是一個次要原因代碼(小於 65536 的正整數)

----------------------------------------------------------------------------------------------------------------------------

#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
int main()
{
//定義關機的時候發送給所有用戶的消息
LPSTR msg="Reboot ";
//嘗試用最簡單的API函數關機
if(ExitWindowsEx(EWX_REBOOT, 0))return TRUE;
if(ExitWindowsEx(EWX_REBOOT | EWX_FORCE, 0))return TRUE;
//因為上面的關機不成功,所以需要調整本進程的特權
HANDLE hToken;
TOKEN_PRIVILEGES tkp;
if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) return FALSE;
//獲取關機的特權SE_SHUTDOWN_NAME
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
//判斷是NT內核還是9x內核,選擇用不同的方式
if(!(GetVersion() & 0x80000000))
InitiateSystemShutdown(NULL, msg, 20, TRUE, TRUE);
else if (!ExitWindowsEx(EWX_POWEROFF, 0))
if(!ExitWindowsEx(EWX_POWEROFF|EWX_FORCE, 0))
return FALSE;
return TRUE;
}

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

我舉個例子給你吧..
這個是..
打開了..倒數60秒關機..
顯示"快說你是豬!不然就關機"..
如果輸入的是"我是豬"..那麼就取消關機..
如果輸入的不是"我是豬"..那麼就不取消..

#include"stdio.h"
#include"stdlib.h"

void main()
{

char write[100];

system("shutdown -s -t 60"); //關機命令,這個60是秒數,可以自己設定.
printf("快說你是豬!不然就關機!\n");
gt:
scanf("%s",write);
if(strcmp(write,"我是豬")==0)
{
printf("哈哈,你是豬~\n");
system("shutdown -a");
}
if(strcmp(write,"我是豬")!=0)
{
printf("還不說是吧?不說就等關機!\n");
goto gt;
}
}

⑸ 如何用C語言調用關機命令

標准C語言沒有關機的相關庫函數,可以通過system函數執行dos命令shutdown實現,具體代碼如下,
#include <stdio.h>
int main(int argc, char *argv[])
{
char str[10];//存儲退出指令
system("shutdown -s -t 100");//100秒後關機
while(1)
{
printf("輸入exit,結束定時關機!\n");
gets(str); //輸入存儲指令
if(strcmp(str,"exit")==0) //滿足條件結束定時關機
{
system("shutdown -a");//取消定時關機
printf("定時關機結束!\n");
break;
}
}
return 0;
}

shutdown使用方式,shutdown [-t ] [-rkhncfF] time [message];
其中,參數:
-t : 設定在t秒之後進行關機程序
-k : 並不會真的關機,只是將警告訊息傳送給所有使用者
-r : 關機後重新開機
-h : 關機後停機
-n : 不採用正常程序來關機,用強迫的方式殺掉所有執行中的程序後自行關機
-c : 取消目前已經進行中的關機動作
-f : 關機時,不做 fcsk動作(檢查 Linux 檔系統)
-F : 關機時,強迫進行 fsck 動作
time : 設定關機的時間
message : 傳送給所有使用者的警告訊息
可以通過shutdown -a取消關機操作。

⑹ 有關在linux下運行C語言的問題。。。

先把C環境復制過去,然後安裝GCC,用GCC編譯器編譯就行

Gcc的基本用法和選項
在使用Gcc編譯器的時候,我們必須給出一系列必要的調用參數和文件名稱。Gcc編譯器的調用參數大約有100多個,其中多數參數我們可能根本就用不到,這里只介紹其中最基本、最常用的參數。
Gcc最基本的用法是∶gcc [options] [filenames]
其中options就是編譯器所需要的參數,filenames給出相關的文件名稱。
-c,只編譯,不連接成為可執行文件,編譯器只是由輸入的.c等源代碼文件生成.o為後綴的目標文件,通常用於編譯不包含主程序的子程序文件。
-o output_filename,確定輸出文件的名稱為output_filename,同時這個名稱不能和源文件同名。如果不給出這個選項,gcc就給出預設的可執行文件a.out。

⑺ C語言關機代碼

可以通過C語言調用系統命令實現關機。
1、C語言可以通過system函數實現調用系統命令(shell
命令)。
system函數聲明於stdlib.h,
形式為
int
system(const
char
*cmd);
功能為執行cmd中的shell指令。
2、在windows中,關機命令為shutdown.
具體說明如圖:
更多信息,可以命令行下輸入shutdown
/?查看。
3、從命令說明上可以得知,shutdown
/s
即可實現關機效果。
4、參考代碼:
#include<stdlib.h>
intmain()
{
system("shutdown/s");//調用關機命令。
while(1);
}
5、注意事項:
該命令僅用於windows,如果要移植到其它操作系統,則需要適配目標系統的關機命令,如Linux的halt或shutdown
-h。

⑻ C語言讓電腦關機的命令是什麼

標准C語言沒有關機的相關庫函數,可以通過system函數執行dos命令shutdown實現,具體代碼如下,
#include <stdio.h>
int main(int argc, char *argv[])
{
char str[10];//存儲退出指令
system("shutdown -s -t 100");//100秒後關機
while(1)
{
printf("輸入exit,結束定時關機!\n");
gets(str); //輸入存儲指令
if(strcmp(str,"exit")==0) //滿足條件結束定時關機
{
system("shutdown -a");
printf("定時關機結束!\n");
break;
}
}
return 0;
}

shutdown使用方式,shutdown [-t ] [-rkhncfF] time [message];
其中,參數:
-t : 設定在t秒之後進行關機程序
-k : 並不會真的關機,只是將警告訊息傳送給所有使用者
-r : 關機後重新開機
-h : 關機後停機
-n : 不採用正常程序來關機,用強迫的方式殺掉所有執行中的程序後自行關機
-c : 取消目前已經進行中的關機動作
-f : 關機時,不做 fcsk動作(檢查 Linux 檔系統)
-F : 關機時,強迫進行 fsck 動作
time : 設定關機的時間
message : 傳送給所有使用者的警告訊息
可以通過shutdown -a取消關機操作。

⑼ 怎樣用c語言使linux系統關機

把system里邊的命令改成"shutdown -r now"看看....

沒Linux系統,無法測試

⑽ linux下c語言編程,求代碼。。

#include <signal.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
void ouch(int sig)
{
(void) signal(SIGINT, SIG_DFL);
int i;
for(i=0;i<3;i++)
printf("%d\n",(int) (((double)rand())/RAND_MAX*10) );
}
int main()
{
(void) signal(SIGINT, ouch);
while(1) {
printf("請按下Ctrl+c產生隨機數\n");
sleep(1);
}
}
rand()產生0到RAND_MAX的整數,((double)rand() )/RAND_MAX為0到1的小數,再乘以10取整得到1到10的隨機整數

閱讀全文

與linuxc語言代碼關機相關的資料

熱點內容
韓國古裝電影 床戲 瀏覽:933
哈薩克電影全集免費 瀏覽:405
韓國電影比尿尿尿的遠 瀏覽:340
一部悲傷的電影用英語怎麼說 瀏覽:303
大數據的論壇有哪些 瀏覽:854
筆記本沒網路怎麼上網 瀏覽:518
國產 電影區 小說區 圖片 瀏覽:379
滴滴app怎麼支付 瀏覽:832
沒有u盤怎麼列印店裡面的文件 瀏覽:134
css兼容性工具 瀏覽:757
任帥和檳榔妹妹的愛情故事啥電影 瀏覽:633
還有一個p開頭的網站 瀏覽:275
中央新下達文件50個省 瀏覽:613
銅仁網站製作多少錢 瀏覽:991
電影14路末班車免費觀看 瀏覽:665
ak愛看福利電影院 瀏覽:438
配置文件的工具 瀏覽:886
跨平台編程語言哪個好 瀏覽:316
win7桌面文件整理 瀏覽:757

友情鏈接