当前位置: 技术问答>linux和unix
关于ll命令
来源: 互联网 发布时间:2017-03-03
本文导语: 现在我写了一个程序要获取ll命令执行的结果,用popen来执行,关键代码如下: snprintf(command,sizeof(command),"ll /proc/889/|sed -n '/exe/p'|awk '{print $10}'"); fp=popen(command,"r"); fgets(result_buf,sizeof(result_buf),fp); 编译没问题,执行...
现在我写了一个程序要获取ll命令执行的结果,用popen来执行,关键代码如下:
snprintf(command,sizeof(command),"ll /proc/889/|sed -n '/exe/p'|awk '{print $10}'");
fp=popen(command,"r");
fgets(result_buf,sizeof(result_buf),fp);
编译没问题,执行时 提示: sh:ll:not found
但是单独执行ll /proc/889/|sed -n '/exe/p'|awk '{print $10}'命令能够正确获得需要的结果。
这究竟是怎么回事。
snprintf(command,sizeof(command),"ll /proc/889/|sed -n '/exe/p'|awk '{print $10}'");
fp=popen(command,"r");
fgets(result_buf,sizeof(result_buf),fp);
编译没问题,执行时 提示: sh:ll:not found
但是单独执行ll /proc/889/|sed -n '/exe/p'|awk '{print $10}'命令能够正确获得需要的结果。
这究竟是怎么回事。
|
ll是alias,popen是重新创建一个子进程执行/bin/bash使用-c command命令行参数解析你的口令,但这个alias不是环境变量里的东西,每次shell启动都要去读文件加载,所以你的popen的shell就没有ll。
[User:root Time:04:25:14 Path:/home/apache/web]$ alias ll
alias ll='ls -l --color=auto'
[User:root Time:04:25:14 Path:/home/apache/web]$ alias ll
alias ll='ls -l --color=auto'
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。