[英]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。
為此,您需要open
, dup2
和close
。
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.