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)。但是,如果有人将长文件名传递给您的程序,那就太糟糕了。。。更好的解决方案是计算正确的缓冲区大小并动态分配,而不是使用固定大小的数组。