1
我試圖提升程序的權限,將文件寫入系統位置。我在OSX的C上做了這件事,通過分支子進程使用authopen
創建並寫入文件。以編程方式使用OSX authopen將文件輸出到文件
我可以創建該文件,但是我很難寫入一個字符串。從authopen
的手冊頁中,如果-stdoutpipe
未被聲明,我可以使用-w
來指示stdin
到文件。我不想從stdin
讀取,但我想寫一個常量str到文件。
我發現-stdoutpipe
的描述混淆了man頁面,並且沒有關於如何使用該標誌的示例。任何人都可以提供任何建議如何做到這一點?
我的代碼:
pid_t processId = fork();
if (processId == 0) {
//in child process
const char * authopenPath = "/usr/libexec/authopen";
//Create the file fromProg if it does not exist. This works OK.
execl(authopenPath,
authopenPath,
"-c",
"/etc/fromProg",
NULL);
//This is where I need help.
execl(authopenPath,
authopenPath,
"-stdoutpipe", //<- Not sure how to write a string to file using this
//-w -a", //<- Or this
"/etc/fromProg",
NULL);
exit(0);
}
另請注意,dup2可以代替2個關閉和重複的調用。 – 2014-10-17 20:51:44