Я вызываю функцию, которая разветвляет и выполняет код другого процесса для меня.Есть несколько процессов, обозначенных как B, C и D. У меня есть практически идентичный код для создания различных процессов.По какой-то странной причине, которую я не могу раскрыть, одна из функций создания процесса вызывает ошибку сегментации.Они выглядят одинаково для меня.Любой шанс, что кто-то может взвесить, может быть, дать мне некоторое представление о том, в чем проблема?
void spawn_process_b(int fileID[]){
int pid;
char * argv[2];
sprintf(argv[0], "%d", fileID[0]);
sprintf(argv[1], "%d", fileID[1]);
pid = fork();
if (pid == 0)
{
execv("PipeW1", argv);
}
}
void spawn_process_c(int fileID[]){
int pid;
char * argv[2];
sprintf(argv[0], "%d", fileID[0]);
sprintf(argv[1], "%d", fileID[1]);
pid = fork();
if (pid == 0)
{
execv("PipeW2", argv);
}
}
Через установку точек останова cout << "bp1" << endl;и так далее, я обнаружил, что spawn_process_b будет работать очень хорошо.spawn_process_c войдет, но получит segfault при первой инструкции sprintf.У кого-нибудь есть идеи?Первоначально spawn_process_b доставлял мне неприятности, и ... моя рука Богу ... Я ничего не изменил, и он начал работать.Мне почти интересно, может ли это зависеть от окружающей среды? </p>