execl执行shell命令问题

VC_ZSY 2010-10-30 11:32:20
我编写ucLinux应用程序时遇到一个问题
ucLinux使用函数execl来执行shell命令时提示出错调用方式如:
if (execl("/bin/sh","sh","-c","ls /usr/bin",(char*)0) == -1)
{
printf("执行Linux命令:%s 失败,原因:%s : %d\n","ls /usr/bin",strerror(errno),errno);
}
execl运行成功,但是执行命令ls /usr/bin失败
Linux内核提示
ls: page allocation failure. order:7, mode:0x40d0
Mem-info:
DMA per-cpu:
CPU 0: Hot: hi: 0, btch: 1 usd: 0 Cold: hi: 0, btch: 1 usd: 0
Active:126 inactive:129 dirty:0 writeback:0 unstable:0
free:254 slab:953 mapped:0 pagetables:0 bounce:0
DMA free:1016kB min:360kB low:448kB high:540kB active:504kB inactive:516kB present:8128kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 0
DMA: 12*4kB 7*8kB 9*16kB 2*32kB 1*64kB 1*128kB 0*256kB 1*512kB 0*1024kB 0*2048kB 0*4096kB = 1016kB
Free swap: 0kB
2048 pages of RAM
273 free pages
540 reserved pages
953 slab pages
9 pages shared
0 pages swap cached
Allocation of length 329063 from process 41 failed
DMA per-cpu:
CPU 0: Hot: hi: 0, btch: 1 usd: 0 Cold: hi: 0, btch: 1 usd: 0
Active:126 inactive:129 dirty:0 writeback:0 unstable:0
free:254 slab:953 mapped:0 pagetables:0 bounce:0
DMA free:1016kB min:360kB low:448kB high:540kB active:504kB inactive:516kB present:8128kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 0
DMA: 12*4kB 7*8kB 9*16kB 2*32kB 1*64kB 1*128kB 0*256kB 1*512kB 0*1024kB 0*2048kB 0*4096kB = 1016kB
Unable to allocate RAM for process text/data, errno 12
Unhandled fault: vector exception (0x000) at 0x00000000
SEGV
...全文
519 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
betashepherd 2012-05-04
  • 打赏
  • 举报
回复
lz 我也遇到这样的问题 跪求你是怎么解决的啊
CrazyBW 2011-12-17
  • 打赏
  • 举报
回复
我的Linux下执行无错误~~~~~~~
zjc363349388 2010-11-01
  • 打赏
  • 举报
回复
菜鸟路过,看看,讨点分
VC_ZSY 2010-11-01
  • 打赏
  • 举报
回复
刚又试了几次,发现刚开始几次执行shell命令是可以的,执行几次之后就失败了~~
VC_ZSY 2010-11-01
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 sanba1100 的回复:]

开发库是什么
[/Quote]
G++
VC_ZSY 2010-11-01
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 yutaooo 的回复:]
LZ要不要用ldd先检查一下链接的库?

呵呵。我对这个帖子还是有点在意,想知道结果。
[/Quote]
该命令在uclinux下不可用,没有这个命令
justkk 2010-10-30
  • 打赏
  • 举报
回复
不懂,手工能执行,那内核应该也是好的啊
会不会开发库有问题..
VC_ZSY 2010-10-30
  • 打赏
  • 举报
回复
难道是内核崩溃??但是我重新烧写内核到开发板后执行还是出错~~应该不会是开发板有问题吧~
VC_ZSY 2010-10-30
  • 打赏
  • 举报
回复
手工执行没有问题,就是调用时执行内核提示出错,以前是偶尔出错,现在是每一个命令都出错~~
justkk 2010-10-30
  • 打赏
  • 举报
回复
程序应该没问题
你手工执行ls /usr/bin是否也有同样问题?
VC_ZSY 2010-10-30
  • 打赏
  • 举报
回复
问题补充:
不是单单ls命令,是执行所有的shell命令内核都有类似这种对应的提示
程序中malloc的地方都有free对应,不存在只分配不释放的问题
sanba1100 2010-10-30
  • 打赏
  • 举报
回复
开发库是什么
yutaooo 2010-10-30
  • 打赏
  • 举报
回复

LZ要不要用ldd先检查一下链接的库?

呵呵。我对这个帖子还是有点在意,想知道结果。
VC_ZSY 2010-10-30
  • 打赏
  • 举报
回复
开发库的问题什么意思??我的编译环境不对??
weifirst118 2010-10-30
  • 打赏
  • 举报
回复
我觉得是开发库的问题
浪漫江湖 2010-10-30
  • 打赏
  • 举报
回复
学习学习
yutaooo 2010-10-30
  • 打赏
  • 举报
回复

喔。LZ是对的。呵呵。抱歉。
yutaooo 2010-10-30
  • 打赏
  • 举报
回复

应该是:


execl("/bin/sh", "sh", "-c", "ls", "/bin/usr", (char *)0);


吧!!

23,110

社区成员

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

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