私は 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"
が charc
に何もないという理由だけであり、私が望むのはファイルを開くことです"/home/random(number stored in char c).txt"
。