2011-10-12 22 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的文本文件的内容并将其发送到标准输出流。

相关问题