複製鏈接
請複製以下鏈接發送給好友

execl函數

鎖定
execl()其中後綴l代表list也就是參數列表的意思,第一參數path字符指針所指向要執行的文件路徑, 接下來的參數代表執行該文件時傳遞的參數列表:argv[0],argv[1]... 最後一個參數須用空指針NULL作結束。 [1] 
中文名
execl函數
所屬領域
計算機

execl函數相關用法

相關函數
fork, execle, execlp, execv, execve, execvp
Windows下頭文件
#include <process.h>
Linux下頭文件
#include <unistd.h>
函數定義
int execl(const char *path, const char *arg, ...);

execl函數函數用法

execl函數函數返回值

成功則不返回值, 失敗返回-1, 失敗原因存於errno中,可通過perror()打印
Windows下示例(vs編譯):
#include <stdio.h>
#include <process.h>
int main()
{
printf("調用D盤Test目錄下的hello.exe, 第一個參數為該應用程序的名稱\n");
execl("D:\\Test\\hello.exe","hello");
printf("進程已經被遞交給了hello.exe,這裏不會再執行");
}
Linux下示例:

execl函數示例1

/* 執行 /bin/ls -al /ect/passwd */
#include <unistd.h>/*** File: execl.c**/
main()
{
// 執行/bin目錄下的ls, 第一參數為程序名ls, 第二個參數為"-al", 第三個參數為"/etc/passwd"
execl("/bin/ls", "ls", "-al", "/etc/passwd", (char *) 0);
}

execl函數示例2

#include <unistd.h>/*** File: execl.c**/
int main()
{
char args[]=" -l";
// 執行/bin目錄下的ls, 第一參數為程序名ls, 第二個參數為"-al", 第三個參數為"/etc/"
execl("/bin/ls","ls","-al","/etc/",NULL);
return 0;
}

execl函數編譯並運行

[cnscn@test c]$ gcc execl.c -o execl
[cnscn@test c]$ ./execl
-rw-r--r-- 1 root root 2218 Jan 13 11:36 /etc/passwd
參考資料
  • 1.    Mouzarani M, Sadeghiyan B, Zolfaghari M. Detecting injection vulnerabilities in executable codes with concolic execution[C]//2017 8th IEEE International Conference on Software Engineering and Service Science (ICSESS). IEEE, 2017: 50-57.https://ieeexplore.ieee.org/abstract/document/8342862