#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define MAXLINE 512
main(int argc,char* argv[]){
int k;
for (k=0; k<=argc; k++) {
if (k%2==0) {
if (fork()==0){
FILE *fi;
FILE *fo;
int i;
fi=fopen(argv[k], "r");
fo=fopen("temp.txt","w");
if (!fi)
return;
char linie[MAXLINE],*p;
for (; ;) {
p = fgets(linie, MAXLINE, fi);
if (p == NULL)
break;
linie[MAXLINE-1] = '\0';
int k=-1;
for (i = 0; i <MAXLINE; i++) {
if (linie[i]=='\n') k=i;
}
for (i = k; i >= 0; --i) {
fprintf(fo,"%c", linie[i]);
}
}
fclose(fi);
fclose(fo);
exit(1);}
}
else
{
if (fork()==0){
execl("/usr/bin/awk","awk","-f","ouk.awk",argv[k],NULL);
exit(1);
}
}
}
};
здесь содержание ouk.awk файлC EXEC, AWK, не работает
{ for (i=NF;i>=1;i--){ if(s){s=s" "$i} else{s=$i }}{print s;s=""}}
В основном то, что я пытаюсь сделать, это создать ряд ARGC процессов и число четное, чтобы отразить текст в файле, и если не переставить слова из каждой строки в обратном направлении, проблема я облицовкой
fprintf (Ф.О., «% с», строка [J])
не работает, и я получаю сообщение об ошибке при попытке выполнить команду AWK скрипт
awk: can't open file > input record number 6, file > source line number 1
если я запускаю только команды AWK в терминале с теми же файлами, он отлично работает, поэтому он должен иметь что-то делать с командой execl. более
Одна вещь, я попытался следующую команду, чтобы переименовать temp.txt Int ARGV [K]
execl("bin/mv","temp.txt",argv[k],NULL)
, но он выходит из строя.
Если кто-то может мне помочь или дать мне ссылку на команды с урока хорошо ехес было бы фантастическим, спасибо большое
«(char *) NULL "не нужно, чтобы он работал с NULL слишком ... – JackRobinson
@JackRobinson, он может работать, но со ссылкой на ссылочную страницу: _ Список аргументов должен быть прерван указателем NULL, и, поскольку это переменные функции, этот указатель должен быть отличен (char *) NULL._ – hmjd