2011-10-12 61 views
1

我想從我的可可APP運行Bash命令。並接收輸出。我使用管理權限執行所有命令。 How to get output from Admin Priveleges bash script, called from Cocoa?什麼是Cocoa中的FILE *類型,以及如何正確使用它?

我想我需要FILE *類型來存儲輸出,但我不知道如何使用它。

什麼是FILE *類型?我該如何使用它?

+2

'FILE *'不是可可。這是POSIX C. –

+0

好的謝謝。以及它應該如何在可可中使用? – User1234

+0

@ User1234與C相同。請參閱我的答案。 – 2011-10-12 12:44:02

回答

3

FILE *是C類型,它與可可沒有任何關係。它是一個打開文件的句柄。這裏有一個例子:

#include <stdio.h> 

int main() { 
    FILE *file; 
    file = fopen("myfile.txt", "w"); // open file 
    if (!file) { // file couldn't be opened 
    return 1; 
    } 
    fputs("fopen example", file); // write to file 
    fclose(file); 
    return 0; 
} 

在可可,你應該正常使用NSString的和NSDatawriteToURL:atomically:encoding:error:writeToURL:atomically:方法,分別。

+0

我正在問的原因..在這裏http://stackoverflow.com/questions/7710068/how-to-get-output-from-admin-priveleges-bash-script-called-from-cocoa。我需要從bash命令接收輸出。你能幫助我嗎? – User1234

+0

使用該問題的代碼後,使用'fread'函數從'pipe'讀取。 – 2011-10-12 12:51:03

+0

因此,我需要創建一個文件,並在讀取後寫入它?沒有辦法讀取它沒有寫入文件?或寫在臨時? – User1234

1

FILE是ANSI C結構用於文件處理。 fopen函數返回一個文件指針。該指針指向一個包含有關文件信息的結構,例如緩衝區的位置,緩衝區中的當前字符位置,文件是正在讀取還是已寫入,以及是否發生錯誤或文件結尾。用戶不需要知道詳細信息,因爲從stdio.h獲得的定義包含稱爲FILE的結構聲明。所需的文件指針的唯一聲明由

FILE *fp; 
FILE *fopen(char *name, char *mode); 

例證這是說計劃生育是一個指向文件的指針,並返回的fopen一個指針到一個文件中。請注意, FILE是一個類型名稱,如int,而不是結構標籤;它是用typedef定義的。

#include <stdio.h> 

int main() 
{ 
    FILE * pFile; 
    char buffer [100]; 

    pFile = fopen ("myfile.txt" , "r"); 
    if (pFile == NULL) perror ("Error opening file"); 
    else 
    { 
    while (! feof (pFile)) 
    { 
     if (fgets (buffer , 100 , pFile) != NULL) 
     fputs (buffer , stdout); 
    } 
    fclose (pFile); 
    } 
    return 0; 
} 

本示例讀取名爲myfile.txt的文本文件的內容並將其發送到標準輸出流。

相關問題