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
18 个解决方案
#1
问题补充:
不是单单ls命令,是执行所有的shell命令内核都有类似这种对应的提示
程序中malloc的地方都有free对应,不存在只分配不释放的问题
不是单单ls命令,是执行所有的shell命令内核都有类似这种对应的提示
程序中malloc的地方都有free对应,不存在只分配不释放的问题
#2
程序应该没问题
你手工执行ls /usr/bin是否也有同样问题?
你手工执行ls /usr/bin是否也有同样问题?
#3
手工执行没有问题,就是调用时执行内核提示出错,以前是偶尔出错,现在是每一个命令都出错~~
#4
难道是内核崩溃??但是我重新烧写内核到开发板后执行还是出错~~应该不会是开发板有问题吧~
#5
不懂,手工能执行,那内核应该也是好的啊
会不会开发库有问题..
会不会开发库有问题..
#6
应该是:
execl("/bin/sh", "sh", "-c", "ls", "/bin/usr", (char *)0);
吧!!
#7
喔。LZ是对的。呵呵。抱歉。
#8
学习学习
#9
我觉得是开发库的问题
#10
开发库的问题什么意思??我的编译环境不对??
#11
LZ要不要用ldd先检查一下链接的库?
呵呵。我对这个帖子还是有点在意,想知道结果。
#12
开发库是什么
#13
该命令在uclinux下不可用,没有这个命令
#14
G++
#15
刚又试了几次,发现刚开始几次执行shell命令是可以的,执行几次之后就失败了~~
#16
菜鸟路过,看看,讨点分
#17
我的Linux下执行无错误~~~~~~~
#18
lz 我也遇到这样的问题 跪求你是怎么解决的啊
#1
问题补充:
不是单单ls命令,是执行所有的shell命令内核都有类似这种对应的提示
程序中malloc的地方都有free对应,不存在只分配不释放的问题
不是单单ls命令,是执行所有的shell命令内核都有类似这种对应的提示
程序中malloc的地方都有free对应,不存在只分配不释放的问题
#2
程序应该没问题
你手工执行ls /usr/bin是否也有同样问题?
你手工执行ls /usr/bin是否也有同样问题?
#3
手工执行没有问题,就是调用时执行内核提示出错,以前是偶尔出错,现在是每一个命令都出错~~
#4
难道是内核崩溃??但是我重新烧写内核到开发板后执行还是出错~~应该不会是开发板有问题吧~
#5
不懂,手工能执行,那内核应该也是好的啊
会不会开发库有问题..
会不会开发库有问题..
#6
应该是:
execl("/bin/sh", "sh", "-c", "ls", "/bin/usr", (char *)0);
吧!!
#7
喔。LZ是对的。呵呵。抱歉。
#8
学习学习
#9
我觉得是开发库的问题
#10
开发库的问题什么意思??我的编译环境不对??
#11
LZ要不要用ldd先检查一下链接的库?
呵呵。我对这个帖子还是有点在意,想知道结果。
#12
开发库是什么
#13
该命令在uclinux下不可用,没有这个命令
#14
G++
#15
刚又试了几次,发现刚开始几次执行shell命令是可以的,执行几次之后就失败了~~
#16
菜鸟路过,看看,讨点分
#17
我的Linux下执行无错误~~~~~~~
#18
lz 我也遇到这样的问题 跪求你是怎么解决的啊