Linux C程式設計 execve總結

2021-08-20 04:42:31 字數 1567 閱讀 1519

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 函式發出的連線請求 根據...