簡體   English   中英

在輸入,輸出和重定向中使用execvp

[英]Using execvp with Input,Output and redirection

在C程序中 ,假設我要使用Exec函數執行給定程序,例如,如果我只想嘗試ls -l,我將執行類似的操作

args[0]="ls";
args[1]="-l";
args[2]=NULL;

...
execvp("ls", args); 

一切都很好。 現在,如果我還要將重定向添加到文件(或stderr)怎么辦? 我被困住了,很明顯,將> log.txt作為數組的第3個條目添加是行不通的,但是我不知道如何進行。

而且,如果我想傳遞一些輸入參數怎么辦? 如果我想執行GCC命令,例如“ gcc -o in redirection> log.txt”,該怎么辦?

[評論更新:]

這是一個C程序,它模擬可以“運行字符串”,包含命令,參數列表,輸入和重定向的字符串的shell。

只需設置文件描述符,因為exec -d進程將找到它們,然后執行exec。
為此,您需要opendup2close

exec -family中的所有功能只是用您所說的任何內容替換當前進程。

在外殼中運行命令:

char * args[] = {
  "sh",
  "-c",
  "ls -l >out.ls 2>err.ls <in.ls",
  NULL
};

...

execvp(args[0], args); 
perror("execvp() failed");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM