gpt4 book ai didi

c - 执行解释器文件时出错

转载 作者:行者123 更新时间:2023-11-30 19:23:27 25 4
gpt4 key购买 nike

我尝试通过解释器文件执行程序。我在 C 中使用了 fork() 和 execl() 函数。这是我的代码:

    if ((pid = fork()) < 0)
printf("fork error");
else if (pid == 0) { /* child */
if (execl( "/home/alien/testinterp", /* the interpreter file */
"testinterp", "arg1", (char *)0) < 0)
printf("execl error");

在文件“/home/alien/testinterp”中,有:

#!/bin/sh

我可以在 shell 中运行/bin/sh 。我使用 Emacs 编辑了解释器文件。

当我运行程序时,遇到错误。(“execl 错误”)。

我做错了什么?

最佳答案

根据问题帖子的评论,答案是:

/home/alien/testinterp 不可执行,因此向此文件添加可执行位将解决问题:chmod +x/home/alien/testinterp

PS1:我是怎么猜到的?

I edited the interpreter file using Emacs

我猜测这个文件可能是新创建的,没有可执行位。

PS2:猜测并不能真正解决问题,有什么更好的方法吗?

  1. 打印errnoperror()很有用。

  2. 此错误来自exec*(),您可以尝试通过shell直接执行它,看看会发生什么

    $/home/alien/testinterp arg1

  3. 一些函数如exec*()fork()是系统调用的包装,您可以使用strace来显示调用系统调用时的信息。

    strace -ff 你的程序的路径

关于c - 执行解释器文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11856650/

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