linux 为什么execv在sort命令中不起作用

jxct1oxe  于 2022-11-22  发布在  Linux
关注(0)|答案(1)|浏览(125)

你好,我正在尝试在forked子进程中使用execv函数来执行以下命令:lsgrepsortawk等,但lsgrep工作,sortawk等不工作,execv返回-1失败,argv输入是stdinargv[0]=sort"sort t.txt"argv[1]=t.txt。例如,当我输入grep 5 t.txt时,它会在t.txt中打印出3个数字,其中包括5,而ls会打印出目录中的每个文件。为什么只有lsgrep有效,而其余命令无效?
第一个

z0qdvdin

z0qdvdin1#

问题是因为您硬编码了要在/bin/中找到的命令,而某些命令(如sort命令)不在该位置(sort通常在/usr/bin/中)。
要解决这个问题,并且能够在标准路径中使用 any 命令,请改用execvp

execvp(argv[0], argv);

execv的不同之处在于,execvp将使用环境变量PATH来搜索命令。
请阅读the exec family manual page了解不同版本的详细信息。

相关问题