在fork进程中使用execlp进行gzip

时间:2013-12-19 23:23:40

标签: c exec gzip fork

我有一个问题,我不知道如何在我的代码中解决。我必须使用gzip压缩从命令行收到的几个参数。

但是我必须在命令行中引入路由而不是文件。我准备的样本运行良好,但我指的是文件的名称,这是不正确的。

您能帮助我指明路线而不是文件吗?在execlp中。路线是argv [],但我不确切知道如何构建句子。

代码是:

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

int main(int argc, char *argv[])
{
    int p,pid[p];
    int fills;
    int ret=0;
    char msg[100];
    int status;
    char filename[30];

    if (argc>1)
    fills=atoi(argv[p]);
    if (argc==1)
    {
        printf("Error");
        exit(1);
    }
    // Creem N paràmetres
    for(p=1; p<argc; p++)
    {

        pid[p] = fork();
        if (pid[p]<0)
            error("Error");

        if (pid[p]==0)
        {
        memset(filename,0,sizeof(filename));
        snprintf(filename,30,"ex1a.c");
        ret=execlp("gzip", "gzip", "-9", "-f", filename, NULL);
            if (ret < 0)
            {
              exit(EXIT_FAILURE);
            }
        printf("Process %d created process %d compressed file %s \n",getppid(),getpid(),argv[p]);
        exit(p);
    }
    else
    wait(status);
}
exit(EXIT_SUCCESS);
}

0 个答案:

没有答案