首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows10平台下_execl()函数的使用

Windows10平台下_execl()函数的使用
EN

Stack Overflow用户
提问于 2020-07-30 00:02:00
回答 1查看 165关注 0票数 0

即使给定的文件在那里,_execl()也会返回-1和错误消息,比如“没有这样的文件或目录”。当我直接在命令提示符下运行gzip命令时,它可以工作。我不能理解我在这里遗漏了什么。

代码语言:javascript
复制
#include <stdio.h>
#include <process.h>
#include <errno.h>

void main(){
int ret = _execl("cmd.exe", "gzip.exe", "C:\\Users\\user_name\\work\\Db618\\test.txt");
printf("ret: %d \t strerror: %s\n", ret, strerror(errno));
}

有人能举例说明如何使用这个函数吗?我在寻找解决方案时又发现了一个API system(),但在使用之前,我想知道这两个系统在Windows平台上的区别是什么?

EN

回答 1

Stack Overflow用户

发布于 2020-07-30 09:45:19

根据_execl:您的第一个参数不需要是cmd.exe,但应该是命令行的第一个命令,如gzip.exe

您可以参考MSDN sample

最后,您的程序只需要删除初始的"cmd.exe",但需要注意的是,最后一个参数必须为NULL以表示终止。

代码如下:

代码语言:javascript
复制
#include <stdio.h>
#include <process.h>
#include <errno.h>
#include <cstring>

int main(int argc, const char* argv[])
{
    int ret = _execl("D:\\gzip-1.3.12-1-bin\\bin\\gzip.exe" ,"-f","D:\\gzip-1.3.12-1-bin\\bin\\test.txt" ,NULL);
    printf("ret: %d \t strerror: %s\n", ret, strerror(errno));
    return 0;
}

如果您想使用system,您可以将命令作为参数传递给system function,就像使用CMD来达到相同的效果一样。

您可以像这样使用它:

代码语言:javascript
复制
system("gzip.exe test.txt");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63157728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档