Я не уверен, что я делаю неправильно.
Я пытаюсь объединить hostname
с помощью pid
, чтобы создать id
.
char *generate_id(void) {
int ret;
char id[1048];
char hostname[1024];
pid_t pid = getpid();
//hostname[1023] = '\0';
if ((ret = gethostname(hostname,1024) < 0)) {
perror("gethostname");
exit(EXIT_FAILURE);
}
sprintf(id, "%s%d", pid);
printf("hostname is %s\n", hostname);
printf("The process id is %d\n", pid);
printf("The unique id is %s", id);
return id;
}
EDIT:
Обновлен код после чтения некоторых ответов:
char *generate_id(void) {
int ret;
char hostname[1024];
pid_t pid = getpid();
//hostname[1023] = '\0';
if ((ret = gethostname(hostname,1024) < 0)) {
perror("gethostname");
exit(EXIT_FAILURE);
}
int size = snprintf(NULL, 0, "%s%d", hostname, pid);
char * id = malloc(size + 1);
printf("hostname is %s\n", hostname);
printf("The process id is %d\n", pid);
printf("The unique id is %s\n", id);
return id;
}
EDIT:
Рабочий код:
char *generate_id(void) {
int ret;
char hostname[1024];
pid_t pid = getpid();
//hostname[1023] = '\0';
if ((ret = gethostname(hostname,1024) < 0)) {
perror("gethostname");
exit(EXIT_FAILURE);
}
int size = snprintf(NULL, 0, "%s%d", hostname, pid);
char * id = malloc(size + 1);
sprintf(id, "%s%d", hostname, pid);
printf("hostname is %s\n", hostname);
printf("The process id is %d\n", pid);
printf("The unique id is %s\n", id);
return id;
}