本文主要介绍了C语言中系统(' pause ')的作用和意义,很好,有参考价值。有需要的请参考。
简单来说就是暂停的意思,通常用在LINUX编程中。在重新启动之前,您将等待接收到信号。
在C/C编程中,当运行程序检查输出效果时,窗口会闪烁然后关闭。
一般在C语言中,通过添加getchar();
一般C中在main函数中return之前加system(' pause ');这样可以清楚的看到输出结果,pause会输出‘按任意键继续.’。
system的原型是int system(char *command),就是在windows平台上执行DOS命令,在linux平台上执行shell命令。
Linux下system () 函数详解简介
(执行shell命令)
相关函数
叉子,execve,waitpid,popen
头文件
#includestdlib.h
定义函数
int system(const char * string);
功能描述
System()会调用fork()生成一个子进程,这个子进程会调用/bin/sh-c string来执行参数字符串string表示的命令,命令执行后再返回原来的调用进程。在调用system()期间,SIGCHLD信号将被暂时挂起,SIGINT和SIGQUIT信号将被忽略。
返回值
如果fork()失败,它返回-1:发生了错误。
如果exec()失败,Shell无法执行,返回值相当于Shell执行exit(127)。
如果执行成功,将返回子Shell的终止状态。
如果system()在调用/bin/sh时失败,则返回127,其他失败原因返回-1。如果参数字符串是空指针,它将返回非零值。如果system()调用成功,最终会在shell命令执行后返回返回值,但这个返回值也可能是system()调用/bin/sh失败返回的127,所以最好再次检查errno确认执行成功。
附加说明
在编写SUID/SGID许可的程序时,不要使用system()。system()将继承环境变量,这可能会导致系统安全问题。模型
# i ncludestdlib.h
主()
{
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/shado
示例2:
char tmp[];
sprintf(tmp,'/bin/mount -t vfat %s /mnt/usb ',dev);
系统(tmp);
其中dev是/dev/sda1.System与exec的区别
1.system()和exec()都可以在进程外执行命令。system在原始进程上创建了一个新进程,但是exec用一个新进程(命令)覆盖了原始进程。
2.system()和exec()都可以生成返回值。system的返回值不会影响原始进程,但exec的返回值会影响原始进程。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。