1.在linux環(huán)境下,調用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變量是另一個函數(shù)調用返回的,是一個指針:
函數(shù)調用原型:int read_data(int addr,char* data,int len)
實際調用方式:read_data(4, eth0_num,6);/*從地址4,讀6個字節(jié),到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,不使用從函數(shù)調用read_data的參數(shù),就能ifconfig成功
5.各位給個意見,看如何才能通過傳變量參數(shù)的方式,因為我需要從其他地方讀值回來
execl() 的參數(shù)是 char* 類型,你應該把網卡地址的 6 字節(jié)轉換成字符串。
比如你讀取的 6 字節(jié)是 00 01 02 03 04 05 ,要轉換成 "00:01:02:03:04:05" 。
參考代碼
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>
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]; // 字節(jié):00 01 02 03 04 05 06
char macHex[18]; // 16進制字符串: "00:01:02:03:04:05"
read_data(macBin);
// 將 6 字節(jié)轉換成 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 吧。
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網學院和江蘇省首批服務外包人才培訓基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團創(chuàng)建于1999年,經過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術與教育服務機構,發(fā)展為教育服務業(yè)的綜合性企業(yè)集團,成為集合面授教學培訓、網
達內教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構,是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經理從事移動互聯(lián)網管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經理職務負責iOS教學及管理工作。
浪潮集團項目經理。精通Java與.NET 技術, 熟練的跨平臺面向對象開發(fā)經驗,技術功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網頁制作和網頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經驗。曾經歷任德國Software AG 技術顧問,美國Dachieve 系統(tǒng)架構師,美國AngelEngineers Inc. 系統(tǒng)架構師。