2011-10-12 3 views
1

내 코코아 APP에서 배시 명령을 실행하려고합니다. 그리고 출력을받습니다. Admin Privilege를 사용하여 모든 명령을 실행하고 있습니다. 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에서와 동일합니다. 내 대답보기. –

답변

3

FILE *은 C 유형이며 Cocoa와 관련이 없습니다. 열린 파일의 핸들입니다. 각각

#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'에서 읽으십시오. –

+0

그래서 파일을 만들고 읽은 후에 파일을 작성해야합니까? 파일을 쓰지 않고 읽을 수있는 방법이 없습니까? 또는 임시로 쓰기? – User1234

1

FILE은 ANSI C 구조로 파일 처리에 사용됩니다. fopen 함수는 파일 포인터를 반환합니다. 이 포인터는 버퍼 위치, 버퍼의 현재 문자 위치, 파일의 읽기 또는 쓰기 여부, 오류 또는 파일 끝의 발생 여부 등 파일에 대한 정보가 들어있는 구조를 가리 킵니다. Stdio.h에서 얻은 정의에는 FILE이라는 구조체 선언이 포함되므로 사용자는 세부 사항을 알 필요가 없습니다. 파일 포인터에 필요한 유일한 선언이 FP는 파일에 대한 포인터, 그리고 fopen을 반환 파일에 대한 포인터라고 말한다

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

을들 수있다. 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라는 텍스트 파일의 내용을 읽고 표준 출력 스트림으로 보냅니다.

관련 문제