Linux函数无法传参,linux中函数execl一直无法调用成功,如何正确地传参数?

execl() 的参数是 char* 类型,你应该把网卡地址的 6 字节转换成字符串。

比如你读取的 6 字节是 00 01 02 03 04 05,要转换成 "00:01:02:03:04:05"。

参考代码

#include

#include

#include

#include

#include

#include

void read_data(char* data)

{

// 模拟网卡地址 00 01 02 03 04 05

unsigned char source[6] = { 0, 1, 2, 3, 4, 5 };

memcpy(data, source, 6);

}

int main()

{

pid_t pid;

char macBin[6]; // 字节:00 01 02 03 04 05 06

char macHex[18]; // 16进制字符串: "00:01:02:03:04:05"

read_data(macBin);

// 将 6 字节转换成 16 进制字符串

snprintf(macHex, sizeof(macHex),

"%02X:%02X:%02X:%02X:%02X:%02X",

macBin[0],

macBin[1],

macBin[2],

macBin[3],

macBin[4],

macBin[5]);

if ((pid = fork()) == -1) {

perror(NULL);

} else if (pid == 0) {

execl("/usr/bin/ip", "ip", "link", "set", "eth0", "address", macHex, NULL);

perror(NULL);

}

}

顺便提一下,用 ip 工具代替 ifconfig 吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值