#include <dos.h>
#include <stdio.h>
#include <stdlib.h>
#ifdef _WIN32
#include <windows.h>
#else
#include <time.h>
#endif
int main(){
int i
#ifdef _WIN32
system("start ping 192.168.100.101 -t")
#else
system("xterm -hold -e ls -l &")
#endif
for(i = 0i <1000i++) {
#ifdef _WIN32
Sleep(1000)
#else /* UNIX */
struct timespec ts
ts.tv_sec = 1
nanosleep(&ts, &ts)
#endif
printf("%d\n", i)
}
}
开机启动程序一般是操作系统启动后启动的程序所以不同的操作系统有不同的开机启动方法
以windows为例可以使用注册表也可以将程序复制到开机启动的某个文件夹里
注册表则一般可以有以下几处
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion
\Run;HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion
\Runonce;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
\Run;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
\RunOnce;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion
\RunOnceEx
等等这些位置
c语言的话可以通过system函数调用reg程序来进行对注册表的操作
也可以使用windows所提供的api
RegCreateKeyEx
RegOpenKeyEx
RegSetValueEx
等等这些注册表操作的函数来完成
而linux操作系统(基于linux内核发布的发行版本统称)就与windows不同
一般linux上开机自启可以从自启脚本上进行添加
比如/etc/rc.loca /etc/rc[2-5].d/目录下等等
只需要将要自启的程序路径写入到自启文件里就可以了
c语言也只需要操作文件的函数就能完成
另外也可以使用其它的方法来达到自启的方法
比如感染某个开机自启程序
方法是将自己要启动的程序的代码“注入“到某个开机自启的程序中
比如windows的explorer.exe等
方法可以是将explorer.exe替换成我们的程序
然后奖explorer.exe这个程序移动到其它目录或者更改名称
而我们的程序除了完成我们本身的功能外再多加一个功能,该功能用来创建一个进程调用原有的explorer.exe程序
这样就可以达到开机自启的目的了
当然我们也可以使用一个新的程序来替换explorer.exe
程序的功能有两个,一个是启动我们要自启动的程序,一个用来启动原有的explorer.exe程序
自然也可以将我们要启动的程序的代码直接添加在explorer.exe的头部或者尾部,头部再添加一个代码用来对这个添加完成的最终文件进行切割,切割成两个可执行程序,一个是我们要启动的程序,一个是原有的explorer.exe程序,再分别调用它们
该方法同样也可以用在linux系统上或者其它系统上
总之开机自启的方法有很多
但不同的操作系统的具体方法却不同
(前面的地方没有做过任何修改,这里的地方专给认证人员的
我的答案完全自己手写,请将你认为我是复制粘贴来的地址给我,谢谢)
在C语言中,程序重启自身可以通过调用exec或者system函数实现。下面是两种实现方法:方法一:使用exec函数实现程序重启
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
printf("Program is running...\n")
// 休眠5秒钟
sleep(5)
printf("Program will restart now...\n")
// 使用exec函数重启程序
char *args[] = {"./program", NULL}
execvp(args[0], args)
return 0
}
方法二:使用system函数实现程序重启
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
printf("Program is running...\n")
// 休眠5秒钟
sleep(5)
printf("Program will restart now...\n")
// 使用system函数重启程序
system("./program")
return 0
}
需要注意的是,无论是使用exec函数还是system函数,都需要将程序的可执行文件名作为参数传入。另外,程序在重启之前需要先将需要保存的数据进行保存,否则数据会丢失。