[英]C: How can I exec() my program with the same command line arguments as my running program
[英]How can I exec() my program in c?
我正在嘗試使用execl()函數在c中運行程序。 當前,應該運行該程序的代碼片段看起來像這樣,而info_proc在info_proc.c文件中,其主文件包含一個printf。
`switch(fork()) {
case -1:
perror("fork");
exit(EXIT_FAILURE);
case 0:
getcwd(dir, 256);
strcat(dir, "/info_proc");
printf("dir %s", dir);
execl(dir, "info_proc", req->data, NULL);
perror("execl");
exit(EXIT_FAILURE);
default:
wait(NULL);
break;
}
`
我的程序向執行返回“ execl:錯誤的地址” ...我真的看不到錯誤可能從哪里來
所以,我的問題是req-> data是pid_t。 這是我解決問題的方法(感謝cdark,usr2564301和Fred Larson!)
char *dir = malloc(sizeof(char) * 256);
switch(fork()) {
case -1:
perror("fork");
exit(EXIT_FAILURE);
case 0:
getcwd(dir, 256);
strcat(dir, "/info_proc");
printf("dir %s", dir);
char *pid = malloc(10 * sizeof(char));
sprintf(pid, "%d", req->data);
execl(dir, "info_proc", pid, NULL);
perror("execl");
exit(EXIT_FAILURE);
default:
wait(NULL);
break;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.