execve函式作用是執行乙個新的程式,程式可以是二進位制的可執行程式,也可以是shell、pathon指令碼
函式原型:
int execve(const char * filename,char * const argv[ ],char * const envp[ ]);
引數介紹:
filename:程式所在的路徑
argv:傳遞給程式的引數,陣列指標argv必須以程式(filename)開頭,null結尾
envp:傳遞給程式的新環境變數,無論是shell指令碼,還是可執行檔案都可以使用此環境變數,必須以null結尾
函式返回值:
成功無返回值,失敗返回-1
例子1,呼叫可執行程式
main.c---->main程式
#include #include #include #include int main(int argc, char *argv)
; char *argv_send = ;
execve("./execve_test",argv_send,envp);
printf("do this.....\r\n");
return 0;
}
execve_test.c---->execve_test程式
#include #include #include #include extern char **environ;
int main(int argc, char *argv)
printf("\r\n\r\n");
//列印argv,引數
for( i = 0; i < argc; i++ )
return 0;
}
執行程式:./main
執行結果:
environ[0]:t1=222
environ[1]:t2=333
argv[0]:./execve_test
argv[1]:1
argv[2]:2
例子2,呼叫shell指令碼
main.c---->main程式
#include #include #include #include int main(int argc, char *argv)
; char *argv_send = ;
execve("./execve_shell.sh",argv_send,envp);
printf("do this.....\r\n");
return 0;
}
execve_shell.sh指令碼
#!/bin/bash
echo $0 $1 $2
echo $t1
echo $t2
執行程式:./main
執行結果:
./execve_shell.sh 1 2
222333
linux c 程式設計
linux下為了安全性不能雙擊執行控制台程式,只有gui程式才能雙擊執行.linux下檔案的型別是不依賴於其字尾名的,但一般來講 o,是目標檔案,相當於windows中的.obj檔案 so 為共享庫,是shared object,用於動態連線的,和dll差不多 a為靜態庫,是好多個.o合在一起,用於...
Linux C程式設計
套接字 sockets 即為網路程序id,是由執行這個程序的計算機的ip位址和這個程序使用的埠 port 組成.可以只用 netstat all 檢視當前系統中網路應用程序的套接字和埠.可以使用 輸出重定向到檔案.linux在標頭檔案中定義了通用的套接字結構型別,可供不同協議呼叫 struct so...
linux c程式設計 網路程式設計
在網路上,通訊服務都是採用 c s機制,也就是客戶端 伺服器端工作流程 使用socket 函式建立伺服器端通訊套介面 使用bind 函式將建立的套介面與伺服器位址繫結 使用listen 函式使伺服器套介面做好接收連線請求準備 使用accept 接收來自客戶端由connect 函式發出的連線請求 根據...