[英]In a fork() the execl doesn't return to parent
這是我的第一個文件:
int main(int argc, char *argv[]){
printf("\n\nJe suis dans le fils\n\n");
execl("/exec","ii",NULL);
printf("\n\nJe suis revenu dans le fils\n\n");
}
這是exec文件:
int main(int argc, char *argv[]){
printf("\n\n\n\nJe suis dans le exec\n\n\n\n");
printf("\n\n argc = %d \n\n argv[0] = %s \n\n argv[1] = %s",argc,argv[0],argv[1]);
}
問題 :
我在exec文件中被阻止,因此在execl
之后的1s文件中的printf
不會顯示:/而且當我對argv [0]進行printf時,它通常應該向我顯示文件路徑,但是在這里給我看“ ii”
我在exec文件中被阻止,所以我的execl之后的printf在1s文件中不顯示
沒錯, execl
不會返回(除非有錯誤)。 一旦exec
就沒有回頭路了:實際上,您的過程將自己變成另一個,執行另一個程序。
當我正常執行argv [0]的printf時,它應該向我顯示文件路徑,但在這里它向我顯示“ ii”
正如您所知,不應將argv[0]
視為理所當然。 父進程可以在其中指定所需的內容(甚至忽略它)。 在您的情況下, 您為子級指定argv[0]
作為ii
。 如果您想正確設置它(無論可能是什么),請添加第二個"/exec"
。
旁注:如果您想要一種簡單的方法來執行某項操作,則可能需要研究標准的system(3)
和popen(3)
函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.