sizeof(int)
, скорее всего, 4 байта в вашей системе. Строка, содержащая PID, потребует (при условии 16-битного PID) не менее 6 байтов: 5 для десятичных цифр и 1 для нулевого терминатора. Таким образом, вы не выделяете достаточно места и потенциально пишете после конца выделенного массива. Это вызывает неопределенное поведение .
Убедитесь, что вы выделите достаточно места для рассматриваемой строки:
int pid = getpid();
char * mypid = malloc(6); // ex. 34567
sprintf(mypid, "%d", pid);
Или используйте строку фиксированного размера:
int pid = getpid();
char mypid[6]; // ex. 34567
sprintf(mypid, "%d", pid);
Если ваша система поддерживает 32-разрядные идентификаторы PID, вам потребуется не менее 11 байтов. Для 64-битных PID не менее 21.