0
這是diner_info程序:爲什麼使用sudo運行execl的程序會中斷?
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
printf("Diners: %s\n", argv[1]);
printf("Juice: %s\n", getenv("JUICE"));
return 0;
}
它被編譯成一個名爲diner_info
這裏是另一個程序:
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[]){
char *my_env[] = {"JUICE=peach and apple", NULL};
execle("diner_info", "diner_info", "4", NULL, my_env);
}
當我運行這個程序像這樣:
Korays-MBP:hello2 koraytugay$ sudo ./a.out
Diners: 4
沒問題......
但是當我不包括須藤我得到一個分段錯誤。爲什麼?
操作系統是OS X.
如何編譯程序? – Cristik
也許,你編譯'diner_info'爲root(sudo),普通用戶沒有權限執行它? 'ls -l diner_info'顯示什麼?你可以直接執行'diner_info'嗎?沒有任何問題嗎? –
@Cristik gcc filename.c -o filename –