导航:首页 > 编程语言 > 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语言代码关机相关的资料

热点内容
彩票手机版本挂机软件 浏览:326
网上安装xp系统 浏览:965
codetank代码 浏览:737
企业网站推广的方法是什么 浏览:226
正常手机数据网络多少正常 浏览:76
怎么网络查询电费 浏览:638
数据库中的view 浏览:138
如何一次多选多行数据 浏览:140
苹果手机系统最安全吗 浏览:537
政企大数据 浏览:470
高光荣大数据技术 浏览:538
江苏美德好少年电子文件的内容 浏览:12
桌面文件夹显示四个 浏览:374
电脑重新系统后桌面文件恢复 浏览:831
哪个短视频app可以放大 浏览:770
刷宝app怎么上传作品 浏览:893
少儿编程需准备什么电脑 浏览:945
邻家女孩07版本下载 浏览:350
自学编程哪个程序好 浏览:253
不知道密码怎么撤销工作表保护 浏览:88