开发者社区> 问答> 正文

C语言执行popen("help","r")在Fedora和Ubuntu下的区别?报错

最近做实验时发现在Fedora下使用popen("help","r")能够成功执行获取得到help命令的执行结果,而在ubuntu下面却报错:sh: 1: help: not found。不知道具体原因是什么,求大神解答一下。

代码如下:

void func() 

{ 

    FILE * fp = NULL; 

    char chBuffer[1024]={0}; 

    char chCmd[100] = "help"; 

    fp = popen(chCmd,"r"); 

    if (fp) 

    { 

        memset(chBuffer,0,sizeof(chBuffer)); 

        while( NULL != fgets(chBuffer,sizeof(chBuffer),fp)) 

        { 

             printf("%s",chBuffer); 

        } 

        pclose(fp); 

    } 

} 

另外还有一个问题是,help不是shell的内部命令吗?那么为什么popen能够执行shell的内部命令,难道是popen先运行了shell程序?如果是的话,那么ubuntu下面执行结果应该跟Fedora下一样才对啊?

展开
收起
爱吃鱼的程序员 2020-06-07 16:33:53 584 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
                        <p>你在终端执行下help命令不就知道了...</p>
    
    2020-06-07 16:34:12
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
在Linux下安...[xubingit].1460269862.pdf 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载