我是靠谱客的博主 深情帅哥,最近开发中收集的这篇文章主要介绍Linux下system函数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Linux C编程中,调用另一个可执行文件调用命令可以使用system函数和exec系列的函数。

 

system在程序中执行一个命令字符串很方便,在man system的时候,可以看到

#include <stdlib.h>

int system(const char *command);

 

system()通过调用/bin/sh -c命令执行命令中指定的命令,并在命令完成后返回。在执行命令期间,SIGCHLD将被阻塞,SIGINT和SIGQUIT将被忽略。
阻塞:就是忙完再说
忽略:收到了但是没有任何动作

比如在当前路径下,存在一个名为 a.out 的可执行文件,那么在一个进程main中使用system来执行这个a.out的程序,则可以直接使用

sysRet = system("./a.out");

system是在其实现中调用了fork + exec + waitpid, 执行完毕之后,回到原先的程序中去。继续执行下面的部分。

 

至于system的返回值
1、如果command是一个空指针,则仅当命令处理程序可用时,system返回非0值。可是使用这一个特性测试当前系统是否支持system函数,UNIX中总是可用的。
2、如果fork失败或者waitpid返回除EINTR之外的出错,返回-1,且设置errno。
3、如果exec失败(即不能执行shell),返回值如同shell实行了exit(127)一样。
4、如果fork,exec,waitpid都执行成功,那返回值是shell的终止状态,可以参见waitpid的说明使用system而不直接使用fork和exec的优点是:system进行了所需的各种出错的处理以及各种信号的处理

 

 

 

 

最后

以上就是深情帅哥为你收集整理的Linux下system函数的全部内容,希望文章能够帮你解决Linux下system函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部