日期:2014-05-16  浏览次数:20616 次

关于ll命令
现在我写了一个程序要获取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}'命令能够正确获得需要的结果。

这究竟是怎么回事。

------解决方案--------------------
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'