新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
首先,你得添加头文件:
相城网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站设计等网站项目制作,到程序开发,运营维护。创新互联于2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。
#include
dos.h
然后,调用Dos命令用函数system()。
例如:
system("Pause");
//使程序暂停执行的Dos命令。
在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
main
{
FILE
*
fp;
charbuffer[80];
fp=popen(“~/myprogram/test.sh”,”r”);
fgets(buffer,sizeof(buffer),fp);
printf(“%s”,buffer);
pclose(fp);
}
用system()函数
原型:int
system(char
*cmd)
包含在dos.h下(VC
包含在stdlib.h)
如
定时关机
程序:
#includestdio.h
#includedos.h
#includestring.h
void
main()
{
char
s[30]="shutdown
-s
-t
";
char
*p;
printf("please
input
how
many
seconds
you
want
to
wait
:
");
scanf("%s",p);
strcat(s,p);
system(s);
}
需要注意的是,上面的程序需在Turbo
C小编译,在VC环境下会提示error
C2065:
'system'
:
undeclared
identifier
可以改为:
#includestdio.h
#includestdlib.h
#includestring.h
int
main()
{
char
p[100]="shutdown
-s
-t
";
char
s[20];//注意这里不能写成*s否则即使调试成功,程序写无法正常运行!
int
str;
int
ch;
printf("请输入
等待时间
(秒):");
scanf("%s",s);
strcat(p,s);
system(p);
return
0;
}
一旦编译成功后就可以在工程文件夹下找到生成的*.exe
文件,以后就不用那么麻烦的键入命令啦,呵呵……
如果想取消关机,可另外在写一个程序:
#includestdio.h
#includedos.h
#includestring.h
void
main()
{
char
s[30]="shutdown
-a
";
system(s);
}
二合一,那叫一个方便啊,哦也!!!