0
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#define MAXLINE 512
main(int argc,char* argv[]){
    int k;

    for (k=1; k<=argc; k++) {
        if ((k%2)==0) {
            if (fork()==0){
                printf("asdsa");
                int fd; /*file descriptor to the file we will redirect ls's output*/

                if((fd = open("file1.txt", O_RDWR | O_CREAT))==-1){ /*open the file */
                    perror("open");
                    return 1;
                }

                dup2(fd,STDOUT_FILENO); /*copy the file descriptor fd into standard output*/
                dup2(fd,STDERR_FILENO); /* same, for the standard error */
                close(fd); /* close the file descriptor as we don't need it more  */

                /*execl ls */
                execl("/usr/bin/rev","rev",argv[k],NULL);
                exit(1);
            }
            else
            {
                wait(0);
            }

            char temp[512];
            sprintf(temp, "mv file1.txt %s",argv[k]);
            system((char *)temp);
        }
        else
        {
            if (fork()==0) {
                int fd; /*file descriptor to the file we will redirect ls's output*/

                if((fd = open("file2.txt", O_RDWR | O_CREAT))==-1){ /*open the file */
                    perror("open");
                    return 1;
                }

                dup2(fd,STDOUT_FILENO); /*copy the file descriptor fd into standard output*/
                dup2(fd,STDERR_FILENO); /* same, for the standard error */
                close(fd); /* close the file descriptor as we don't need it more  */

                execl("/usr/bin/awk","awk","-f","awk2.sh",argv[k],NULL);

                exit(1);
            }
            else
            {
                wait(0);                 
            }
            char temp[512];
            sprintf(temp, "mv file2.txt %s",argv[k]);
            system((char *)temp);
        }
    }
}

私がやろうとしているのは、ファイル file2.txt の名前を に変更することですが、うまくいきargv[k]ません。基本的に全体の考え方は、excelコマンドの結果を同じファイル argv[k] に保存することです。誰でもこれで私を助けることができますか?

編集: argv[]「file1.txt」「file5.txt」など、コマンドラインでパラメーターとして指定されたファイルのリストです。

Edit2:私はこれを次のように実行するふりをしましょう

$gcc program.c
$./a.out myfile.txt


myfile.txt
abc
efg

ouk2.awk が行うことは、保存することです

file2.txt
cba
gfe

次に、myfile.txt を file2.txt の内容で書き換えます。

myfile.txt
cba
gfe

しかし、この最後のステップは機能しません。システムコマンドによって実行されるはずですが、何らかの理由でファイル「myfile.txt」に何も変更されません。プログラムを起動した後、得られるのは

myfile.txt
abc
efg

file2.txt
cba
gfe

そして、私が取得したい前に私がどのように言っていたか

myfile.txt
cba
gfe
4

0 に答える 0