c - 使用 fork() 创建文件夹



我目前正在研究Linux中的fork函数,并被要求做一个看似简单的程序。程序必须在当前目录中创建 3 个目录 ./D1/D2/D3,然后将其当前目录更改为 D3 并最终打印绝对路径,我一开始就遇到了麻烦。

"程序 dir123(进程 A(必须首先创建一个本地结构目录,创建一个新的进程(进程 B(,将其图像替换为 mkdir 命令图像,并使用选项 "-p" 一次创建所有树目录">

有人可以启发我需要做什么吗?似乎过程 A 是创建如下目录:system("mkdir ./D1/D2/D3"(;

我不知道的是,我必须使用子进程来创建 3 个目录中的每一个,或者使用一个子进程一次创建所有三个目录。

它是葡萄牙语:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main()
{
   pid_t pid, pidw;
   int status;
   printf("nExemplo de aplicacao 05 da funcao fork()n");
   pid= fork();
   if ( pid==-1 ) {
      perror("Erro na funcao fork()");
      exit(1);
   }
   if ( pid ) {
      /* pid>0, codigo para o processo pai */
      printf("Codigo do Pai  :  PID=%5d  PPID=%5dn", 
         (int) getpid(), (int) getppid());
      printf("Codigo do Pai  :  Iniciado wait()n");
      pidw= wait(&status);
      printf("Codigo do Pai  :  Processo filho PID=%5d" 
         " terminou!n", (int) pidw);
   }
   else {
      /* pid=0, codigo para o processo filho */
      printf("Codigo do Filho:  PID=%5d  PPID=%5dn", 
         (int) getpid(), (int) getppid());
    //DIRECTORY CREATION
        system("mkdir -p D1/D2/D3");
      printf("Codigo do Filho:  PID=%5d  PPID=%5dn", 
         (int) getpid(), (int) getppid());
   }
   return 0;
}

"我不知道的是,我必须使用子进程来创建 3 个目录中的每一个,或者使用一个子进程一次创建所有三个目录。

从问题陈述中可以明显看出,您应该使用 exec*() 系列函数通过 mkdir -p 立即创建目录。您在system()呼叫中具有正确的命令。

由于这是家庭作业,我不会给你答案。所需的呼叫声明为int execvp(const char *file, char *const argv[]);

新程序员努力解决的一件事是第一个参数是程序名称的副本,所以它看起来更像execvp(args[0], args) 其中 args 是一个char *数组。

最新更新