小编Dan*_*ler的帖子

为什么在C分叉的情况下,即使有防护措施,我的文件也执行两次此标头?

即使有警卫人员到位,我的文件仍在尝试两次执行mkdir。

我尝试将ifndef放在另一个c文件中,但仍执行两次

酸碱度

#ifndef P_H
#define P_H

void p1(char* filepath, int m);


#endif
Run Code Online (Sandbox Code Playgroud)

main.c

#include "main.h"// includes ifndef with p1.h inside it

int main(int argc, char *argv[]){

    p1("Hi",2);

    return 0;

}
Run Code Online (Sandbox Code Playgroud)

第1版

#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);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我执行gcc …

c fork header include-guards execvp

0
推荐指数
1
解决办法
39
查看次数

标签 统计

c ×1

execvp ×1

fork ×1

header ×1

include-guards ×1