c语⾔退出程序命令exit_shell命令在C语⾔程序中的调⽤
我们知道linux中有很多系统函数,那么如果在程序中可能使⽤系统函数,那是⼗分⽅便的,⽐如我们需要将⽇期和时间写⼊到file⽂件中去,使⽤系统命令⾏函数可以这样:
因此在标准C语⾔中定义了system函数,它的操作依赖于操作系统,我们来看下它的调⽤形式:
int system (const char *__command);
该函数需要引⼊头⽂件stdlib.h
该函数是⽤fork,exec,waitpid这3个系统函数实现的,返回值想对⽐较复杂
shell命令属于什么语言
1、 如果command为空指针,当系统实现了system函数时,返回⾮零指针,否则返回零,这是个⽤来测试系统的system函数是否有效的⽅法,在⼀般linux系统中,system都是有效的;
2、 如果command不空,就要根据fork,exec,waitpid这3个系统函数的执⾏情况确定返回值,若fork出错或waitpid中出现EINTR错误,system返回-1;
3、 如果exec错误返回,表⽰shell⽆法执⾏这个命令,返回值与shell执⾏exit(127)的返回值相同,
4、 否则,若3个系统函数调⽤都成功了,返回值shell的结束状态,与前⾯介绍的waitpid的返回值情况相同。
我们来看看⼏个语句的执⾏返回值:
下⾯呢我在⽹上了下system函数的实现代码,帮助我们理解system函数:
我们来看下这个函数,命令sh的"-c"选项指出下⼀个命令⾏参数就是命令输⼊,⽽不是从标准输⼊或⽂件中读取,。sh命令⾃动对这个以空字符结尾的字符串进⾏分析,将它分解为独⽴的命令⾏参数的形式,并执⾏这个命令,这个命令可以包括I/O重定向,管道命令等。
在这⾥⼦进程退出时使⽤了_exit⽽不是exit,这是为了保证⼦进程的标准I/O流不被清掉。
下⾯我们来看⼀个具体点的例⼦:
命令,系统⽆法执⾏,运⾏execl("/bin/sh

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。