我刚开始学习 C 编程,我对fork()
, exec()
,pipe()
等有一些不确定性。
我已经开发了这段代码,但是当我执行它时,变量c
仍然是空的,所以我不知道是孩子没有写入管道,还是父母没有从中读取。
请问你能帮帮我吗?这是代码:
int main() {
int pid=0;
int pipefd[2];
char* c=(char *)malloc(sizeof(char));
FILE *fp;
pipe(pipefd);
pid=fork();
if (pid==0){
close(pipefd[0]);
dup2(pipefd[1],1);
close(pipefd[1]);
execl("ls -l | cut -c28","ls -l | cut -c28", (char *) 0);
}
else{
close(pipefd[1]);
read(pipefd[0], c, 1);
char* path="/home/random";
char* txt=".txt";
char* root=malloc(strlen(path) + strlen(txt) + sizeof(char));
strcpy(root,path);
strcat(root,c);
strcat(root,txt);
close(pipefd[0]);
fp=fopen(root,"w+");
(...)
}
问题是最终的根字符串只是"/home/random.txt"
因为 char 中没有任何内容c
,而我想要的是打开文件"/home/random(number stored in char c).txt"
。