鱼C论坛

 找回密码
 立即注册
查看: 3256|回复: 6

C\C++语言交流:Linux c中关于调用系统命令的问题

[复制链接]
发表于 2011-4-21 23:18:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 小逸 于 2011-4-21 23:22 编辑
#include <stdio.h>
main()
{

        printf("Your SystemUserName is:\n");//打印一句话,这个地方!!!只能加\n如果不加或者加其他的(如:\t),结果就是正好反了,就是命令结果先出来,然后才打印了,应该是系统的事,我在Windows下试了一下,加与不加无所谓,结论(不得不说还是B儿NB!^0^)

        system("whoami");//调用linux系统命令查看当前是谁
}
现在的问题就是这样效果也能实现,但是不灵活,我想的是声明一个变量,来放system(“whoami”);返回的值,然后,我再通过变量打印出来。试了很多次不行哦,哪位GGMM会的话,请指点一下。3Q
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-4-21 23:33:43 | 显示全部楼层
写个windows平台下的例子也一样的哈,谢谢,着急中
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-21 23:52:47 | 显示全部楼层
int system(const char * cmdstring)
{
      pid_t pid;
      int status;
      
      if(cmdstring == NULL)
      {            
            return (1);
      }      
      
      if((pid = fork())<0)
      {            
            status = -1;
      }
      else if(pid == 0)
      {
            execl("/bin/sh", "sh", "-c", cmdstring, (char *)0);
            -exit(127); 
      }
      else
      {
            while(waitpid(pid, &status, 0) < 0)
            {
                  if(errno != EINTER)
                  {
                        status = -1;
                        break;
                  }
            }
      }

      return status;
}
以上是system()函数的源码,可以看得出system()是直接调用execl("/bin/sh", "sh", "-c", cmdstring,(char*)0)是调用shell。

这个shell的路径是/bin/sh,后面的字符串都是参数,然后子进程就变成了一个shell进程。

这个shell的参数是cmdstring,就是system接受的参数。

在windows中的shell是command,想必我们都很熟悉shell接受命令之后做的事吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-21 23:55:17 | 显示全部楼层
对了,忘了回答问题,因为SYSTEM只是起到把命令给SHELL的作用,没有能够直接得到他的返回值,所以用一个变量来存储可能要用另外的方法,不过另外的方法可能更纠结,呵呵,把输出缓冲区截取,然后赋值给变量……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-4-22 00:01:02 | 显示全部楼层
回复 4# 小甲鱼


    :$ 恩好的,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2015-12-13 12:08:05 | 显示全部楼层
恩恩恩恩
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-12-15 15:52:32 | 显示全部楼层
学习到了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 16:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表