日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

函数exec

發布時間:2023/11/30 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 函数exec 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

exec函數族

1. 執行指定目錄下的程序

#include <unistd.h> int execl(const char *path, const char *arg, ...);返回值:若出錯,返回-1;若成功,不返回

分析:

  • path: 要執行的程序的絕對路徑
  • 變參arg: 要執行的程序的需要的參數
  • 第一arg:占位
  • 后邊的arg: 命令的參數
  • 參數寫完之后: NULL
  • 一般執行自己寫的程序

?

2. execv函數原型:
?

#include <unistd.h> int execv(const char *path, char *const argv[]);返回值:若出錯,返回-1;若成功,不返回

參數:

  • path = /bin/ps
  • char* args[] = {"ps", "aux", NULL};
  • execv("/bin/ps", args);

?

3.?執行PATH環境變量能夠搜索到的程序

#include <unistd.h> int execlp(const char *file, const char *arg, ...);返回值:若出錯,返回-1;若成功,不返回

分析:

  • file: 執行的命令的名字
  • 第一arg:占位
  • 后邊的arg: 命令的參數
  • 參數寫完之后: NULL
  • 執行系統自帶的程序
  • execlp執行自定義的程序: file參數絕對路徑

?

4. execvp函數原型:

#include <unistd.h> int execvp(const char *file, char *const argv[]);返回值:若出錯,返回-1;若成功,不返回

?

5.?執行指定路徑, 指定環境變量下的程序

#include <unistd.h> int execle(const char *path, const char *arg, ..., char *const envp[]);返回值:若出錯,返回-1;若成功,不返回

分析:

  • path: 執行的程序的絕對路徑??/home/itcast/a.out
  • arg: 執行的的程序的參數
  • envp: 用戶自己指定的搜索目錄, 替代PATH
  • char* env[] = {"/home/itcast", "/bin", NULL};

?

6. execve函數原型:

#include <unistd.h> int execve(const char *path, char *const argv[], char *const envp[]);返回值:若出錯,返回-1;若成功,不返回

?

二、程序清單:

1. 測試代碼:

#include <unistd.h> #include <stdio.h> #include <stdlib.h>int main() {for(int i = 0; i < 8; ++i){printf(" parent i = %d\n", i);}pid_t pid = fork();if(pid == 0) {execlp("ps", "ps", "aux", NULL);perror("execlp");exit(1);}for(int i = 0; i < 3; ++i) {printf("----------- i = %d\n", i);}return 0; }

輸出結果:

總結

以上是生活随笔為你收集整理的函数exec的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。