2010-07-31 5 views
1

안녕 다음 코드 샘플은 약간의 문제가 있거나 OS 내부에서 뭔가를해야합니다.파일 조작이 새 행에서 일어나지 않습니다.

#include <stdio.h> 
    #include <stdlib.h> 
    #include <unistd.h> 
    #include <string.h> 
    #include <sys/types.h> 
    #include <sys/stat.h> 
    #include <fcntl.h> 

    static void usage(); 
    #define MONC_AM_CONF "/tmp/monc.conf" 

int main(int argc, char **argv) 
{ 
     int ch; 
     char list[200]; 
     int len; 
     int fd; 

     memset(list,0,200); 
     if (argc < 11) { 
       usage(); 
       exit(1); 
     } 

     while ((ch = getopt(argc, argv, "N:S:P:H:R:")) != -1) { 
       switch (ch) { 
         case 'N': 
           len = strlen(optarg) + 2; 
           sprintf(list,"%s::",optarg); 
           break; 
         case 'S': 
           sprintf(list+len,"%s::",optarg); 
           len = len + strlen(optarg) + 2; 
           break; 
         case 'P': 
           sprintf(list+len,"%s::",optarg); 
           len = len + strlen(optarg) + 2; 
           break; 
         case 'H': 
           sprintf(list+len,"%s::",optarg); 
           len = len + strlen(optarg) + 2; 
           break; 
         case 'R': 
           sprintf(list+len,"%s ",optarg); 
           len = len + strlen(optarg); 
           break; 
         default: 
           printf ("You specified a parameter I don't " 
               "know about.\n"); 
           break; 
       } 
     } 
     argc -= optind; 
     argv += optind; 

     printf("Total length of string is %d\n",len); 
     printf("The string is %s\n",list); 

     fd = open(MONC_AM_CONF, O_WRONLY|O_CREAT|O_APPEND, 0644); 
     lseek(fd, 0,SEEK_END); 
     write(fd,list,len); 
     close(fd); 

     return 0; 
} 

static void usage() 
{ 
printf("Please provide the command in correct format\n"); 
printf("monc_am_config -N <Comp_Name> -S <Start Script Path> -P <Stop Script Path> -H <HealthCheck Script Path> -R <Recovery Policy>\n"); 

return ; 
} 

명령을 실행할 때마다 출력 파일이 달라집니다. 이 프로그램을 실행할 때마다 매번 새로운 줄에 정보를 써야하지만 파일의 같은 줄에 쓰고 있습니다.

Plz 도움말. 당신은 목록에 "\ n을"을 추가한다

답변

2

, 즉

list[len++] = '\n'; 
+2

및 199 개 문자 적 ​​빠른 회신 – msw

+0

감사합니다 필요합니다 모든 것을 것을 희망한다! 그것은 나를 위해 작동합니다. – Arpit

관련 문제