关于ll命令

afeiluo 2012-07-05 04:27:13
现在我写了一个程序要获取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}'命令能够正确获得需要的结果。

这究竟是怎么回事。
...全文
212 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
afeiluo 2012-07-09
  • 打赏
  • 举报
回复
嗯嗯 大家说得都对哈,呵呵
JoeBlackzqq 2012-07-07
  • 打赏
  • 举报
回复
snprintf(command,sizeof(command),"ls -l /proc/889/|sed -n '/exe/p'|awk '{print $10}'");
桶丁 2012-07-07
  • 打赏
  • 举报
回复
ll是别名,换成 ls -l即可
心死 2012-07-07
  • 打赏
  • 举报
回复
ls -l
daviddb7 2012-07-06
  • 打赏
  • 举报
回复
1楼正解,改成ls -l
qq120848369 2012-07-05
  • 打赏
  • 举报
回复
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'

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧