簡體   English   中英

在fork()中,execl不會返回到父級

[英]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.

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