Linux下which指令的另类用法

            最近在实现一个linux下程序的时候,需要程序可以调用linux系统下面指定的应用程序。如果这是windows程序,那么可以通过RegOpenKeyRegOpenKey读取注册表找到指定程序的安装路径,再利用CreateProcess函数进行调用即可完成前面提到的功能。

       因为每个人安装程序的习惯不一样,同一个程序在不同操作系统下的执行路径可能不一样,linux下没有注册表这一说,也就无法利用注册表来找到程序的执行路径。由此想到利用强大的shell命令来完成这一功能。首先介绍一下which指令,which指令用于查找可执行文件的位置,具体说明如下:         

              1.命令格式:

                    which  可执行文件名称 

              2.命令功能:

                   which指令会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。

              3.命令参数:

                  -n  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。

                  -p  与-n参数相同,但此处的包括了文件的路径。

                 -w  指定输出时栏位的宽度。

                 -V  显示版本信息

      写一个简单的shell脚本即可得到程序的执行路径,在本例用VBoxManage做示例。代码如下:

which VBoxManage

        

     保存为shell.sh

      程序调用shell.sh并且保存程序执行路径的代码如下所示:

FILE *fp;
char buffer[100];
fp = popen("./shell.sh","r");
fgets(buffer,sizeof(buffer),fp);
pclose(fp);

        上述代码片段即可把脚本执行得到的字符串保持到buffer数组中。        


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值