Я новичок в C, поэтому извиняюсь, если ответ очевиден, я искал в другом месте.printf вызывает segfault с getlogin()
библиотеки я в том числе, являются:
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <fcntl.h>
#include <sys/stat.h>
код, который не удается это:
char *USER = getlogin();
char CWD[128];
if (USER == NULL)
printf("cry\n");
getcwd(CWD, sizeof(CWD));
printf("this prints\n");
printf(USER);
printf("this does not\n");
printf("%[email protected]:%s> ", USER, CWD);
крик не печатает, так что должно означать, что getlogin успешно. segfault вызван printf (USER); далее
тестирование показывает, что феллинг блок печатает полностью
printf("this prints\n");
printf(USER);
printf("this prints\n");
но феллинг блок будет печатать эти отпечатки конец затем сегментации, не показывая USER
printf("this prints\n");
printf(USER);
EDIT:
Извините за растрату ваше время. Я случайно удалил fgets, который должен был следовать за ним, и это вызывало segfault. Я был на этой ошибке уже пару часов, мне это нравится, когда проблема такая маленькая.
Thanks
Возможно, он находится в процессе печати 'cry', но ему не хватает времени, прежде чем он будет неисправен. Добавьте точку останова (или что-то), чтобы проверить, что блок 'if' не вводится. –
попытаться добавить: еще printf ("% s \ n", USER); –
printf (CWD) работает, если я помещаю его непосредственно перед printf ("% s @ myshell:% s>", USER, CWD); – d0m1n1c