операция записи файла не происходит в новой строке - PullRequest
1 голос
/ 31 июля 2010

Привет, следующий пример кода, похоже, имеет какую-то проблему, или это связано с внутренними операционными системами.

    #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 help.

1 Ответ

2 голосов
/ 31 июля 2010

Вы должны добавить "\ n" в список, то есть

list[len++] = '\n';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...