я работал на какой-то код, чтобы создать новую папку каждый конкретный FIFO записывается в:Loop не может продолжать цикл
int main (int argc, char* argv[]) {
if (argc != 2) {
printf("Usage: %s <directory>\n",argv[0]);
exit(0);
}
int ret = chdir(argv[1]);
if (ret < 0) {
printf("Could not chdir to %s\n",argv[1]);
perror("");
exit(0);
}
ret = mkfifo("create",0666);
if (ret < 0) {
perror("Could not make create fifo");
return 0;
}
int ctfd = open("create",O_RDWR);
if (ctfd < 0) {
perror("Could not open create");
return 0;
}
char create[1];
//socket counter
int count = 0;
char crdir[15];
for(;;ret = read(ctfd,create,1)) {
//printf("%s %d\n",create,count);
if (ret < 0) {
perror("Failed to read from create");
continue;
}
else if (ret < 1 || create[0] == '\n') {
continue;
}
sprintf(crdir,"%d",count);
ret = mkdir(crdir,0777);
if (ret < 0) {
printf("Failed to create dir");
perror("");
continue;
}
count++;
switch(fork()) {
case -1:
perror("Failed to fork");
break;
case 0:
printf("%d\n",count);
break;
default:
//char* argv[ ] = {"netclient",cte};
exit(0);
}
printf("test");
}
//execvp()
return 0;
}
Однако при запуске это происходит:
[email protected]:~/coding/netdir$ mkdir test
[email protected]:~/coding/netdir$ ./netserver test &
[1] 2122
[email protected]:~/coding/netdir$ echo 1 > test/create
[1]+ Done ./netserver test
1
Что я сделал не так? Почему он не продолжает цикл и ждет больше ввода? FIFO открыт для чтения и записи, чтобы он не закрывался, когда запись прекращалась, не работает ли это неправильно?
Я исправил это сейчас, но он все еще выходит. – Tookmund
Я думаю, что нашел что-то еще; см. мое редактирование –
Да, это сработало! Спасибо за вашу помощь! – Tookmund