gpt4 book ai didi

c - 在 C 中使用 execve() 调用 "pbmtextps"失败?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:03:29 26 4
gpt4 key购买 nike

在我的 Linux 终端上,当我输入

pbmtextps cat | pamfile

然后按回车键。

它给了我以下输出,

stdin:  PBM raw, 83 by 104

但是,我试图通过在我的主程序中使用 execve() 来调用“pbmtextps”。以下是程序片段:

char* haha[] = {"pbmtextps","cat","|", "pamfile", NULL};
if(execve("pbmtextps",haha, NULL) == -1){
fprintf(stderr, "%s\n", "NOT ok");
}
else{
fprintf(stdout, "%s\n", "OK");
}

程序启动后,程序打印“Not ok”。我在同一终端的同一目录中运行该程序。

最佳答案

execve() 不搜索要运行的程序的路径,因此您需要为其提供有效的绝对或相对文件名。它也不使用 shell,因此您正在尝试的管道不会起作用。参数全部直接传递给正在执行的程序。

它也不会在成功时返回,因为没有任何东西可以返回,所以打印成功消息没有意义。

关于c - 在 C 中使用 execve() 调用 "pbmtextps"失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53244397/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com