C 使用fork创建文件夹和文件

C 使用fork创建文件夹和文件,c,linux,C,Linux,使用fork(),我希望孩子使用我在控制台中给出的参数创建一个文件夹: /例如abc 父进程将在该文件夹中放置一个包含所有当前进程的文件.txt 我的问题是家长无法识别此文件夹 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/wait.h> int main(int argc , char *

使用
fork()
,我希望孩子使用我在控制台中给出的参数创建一个文件夹:

/例如abc

父进程将在该文件夹中放置一个包含所有当前进程的
文件.txt

我的问题是家长无法识别此文件夹

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

int main(int argc , char *argv[])
{
    int fid,status;
    fid=fork();
    if(fid==0)
    {
        mkdir(argv[1],0777);
        wait(&status);
    }
    else if(fid>0)
    {
        system("ps -A >> argv[1]/file.txt");
    }
    else
        printf("fork failed");

    return 0;
}
#包括
#包括
#包括
#包括
#包括
int main(int argc,char*argv[])
{
int fid,状态;
fid=叉子();
如果(fid==0)
{
mkdir(argv[1],0777);
等待(&状态);
}
否则,如果(fid>0)
{
系统(“ps-A>>argv[1]/file.txt”);
}
其他的
printf(“fork失败”);
返回0;
}
试试这个

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>

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

    char string[50];
    sprintf(string, "ps -A >> %s/file.txt", argv[1]);

    fid=fork();
    if(fid==0)
    {
        mkdir(argv[1],0777);
        wait(&status);
    }
    else if(fid>0)
    {
        system(string);
    }
    else
        printf("fork failed");

    return 0;
}
#包括
#包括
#包括
#包括
#包括
int main(int argc,char*argv[])
{
int fid,状态;
字符串[50];
sprintf(字符串,“ps-A>>%s/file.txt”,argv[1]);
fid=叉子();
如果(fid==0)
{
mkdir(argv[1],0777);
等待(&状态);
}
否则,如果(fid>0)
{
系统(字符串);
}
其他的
printf(“fork失败”);
返回0;
}

String to system()API是错误的,因为argv[1]不会被它的值替换。例如,您输入了./example dexter,但传递给系统API的字符串是“ps-A>>argv[1]/file.txt”,为什么需要使用
fork
?您可以更简单地实现这一点,而无需使用
fork
;现在还不清楚通过分叉可以获得什么。解决了,谢谢,我的一个错误是child中的等待(&status)。但是,如果有人将长文件名传递给您的程序,那就太糟糕了。。。更好的解决方案是计算正确的缓冲区大小并动态分配,而不是使用固定大小的数组。