Даже с установленной защитой мой файл все еще пытается выполнить mkdir дважды.
Я попытался поместить ifndef в другой файл c, но он все еще выполняется дважды
ph
#ifndef P_H
#define P_H
void p1(char* filepath, int m);
#endif
main.c
#include "main.h"// includes ifndef with p1.h inside it
int main(int argc, char *argv[]){
p1("Hi",2);
return 0;
}
p1.c
#include "phase1.h"
#include <stdlib.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>
void p1(char* filepath, int m){
pid_t cpid;
cpid = fork();
if ((cpid = fork()) == -1) {
perror("fork failed");
}
if(cpid > 0){
wait(NULL);
}
else{
char *makeDir[] = {"mkdir", "MyNewDirectory", NULL};
execvp(makeDir[0],makeDir);
}
}
когда я выполняю gcc -o p1test main.c p1.c и ./p1test, Iполучить сообщение об ошибке, что mkdir: не может создать каталог 'MyNewDirectory': файл существует ". Очевидно, он работает, чтобы создать каталог, но затем пытается создать его снова. Разве охранники не должны защищать от этих нескольких выполнений? что-то делать с вилкой? Это первая попытка использовать пользовательские файлы заголовков. Заранее спасибо, и если где-то уже есть ответ, пожалуйста, дайте мне знать, и я удалю это.