linux中函数execl一直无法调用成功,如何正确地传参数?
1.在linux环境下,调用execl:
if((pid=fork())<0){
printf("fork error\n");
}else if(pid==0){ /*child*/
if(execl("/sbin/ifconfig","ifconfig","eth0","hw","ether",eth0_num,NULL)<0){
exit(1);
}else{
exit(0);
}
}
2.其中eth0_num变量是另一个函数调用返回的,是一个指针:
函数调用原型:int read_data(int addr,char* data,int len)
实际调用方式:read_data(4, eth0_num,6);/*从地址4,读6个字节,到eth0_num*/
3.但是运行的时候回报错:
ifconfig: invalid hw-addr
4.我打印eth0_num的值是:0x7e8b8bf4
打印*eth0_num,*(eth0_num+1),*(eth0_num+2)的值是: 00 90 8f
值没错,但是一直行不通,我试过另一种方式
直接复制char *eth0_num="1eed19271ab3";然后调用execl,不使用从函数调用read_data的参数,就能ifconfig成功
5.各位给个意见,看如何才能通过传变量参数的方式,因为我需要从其他地方读值回来
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
execl() 的参数是 char* 类型,你应该把网卡地址的 6 字节转换成字符串。
比如你读取的 6 字节是 00 01 02 03 04 05 ,要转换成 "00:01:02:03:04:05" 。
参考代码
顺便提一下,用 ip 工具代替 ifconfig 吧。