用 execv 调用 'ls'

2023-12-11

我是系统调用和 C 编程新手,正在完成我的大学作业。

我想调用“ls”命令并让它打印目录。

我所拥有的:(我添加了注释,以便您可以看到我通过每个变量看到的内容。

int execute( command* cmd ){

  char full_path[50];
  find_fullP(full_path, p_cmd); 
  //find_fullP successfully updates full_path to /bin/ls
  char* args[p_cmd->argc];
  args[0] = p_cmd->name;
  int i;
  for(i = 1; i < p_cmd->argc; i++){
      args[i] = p_cmd->argv[i];
  }

/*
 * this piece of code updates an args variable which holds arguments 
 * (stored in the struct) in case the command is something else that takes 
 * arguments. In this case, it will hold nothing since the command 
 * will be just 'ls'.
 */

  int child_process_status;
  pid_t child_pid;
  pid_t pid;

  child_pid = fork();

  if ( child_pid == 0 ) {
      execv( full_path, args );
      perror("fork child process error condition!" );
  }

  pid = wait( &child_process_status );
  return 0;
}

我没有看到任何事情发生,很困惑,有什么想法吗?


这是调用的最小程序ls using execv。注意事项

  • 的清单args应包含可执行文件作为第一个参数
  • 的清单args必须以 NULL 结尾
  • if the args设置正确,然后args[0]可以作为第一个参数传递给execv

#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>

int main( void )
{
    int status;
    char *args[2];

    args[0] = "/bin/ls";        // first arg is the full path to the executable
    args[1] = NULL;             // list of args must be NULL terminated

    if ( fork() == 0 )
        execv( args[0], args ); // child: call execv with the path and the args
    else
        wait( &status );        // parent: wait for the child (not really necessary)

    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用 execv 调用 'ls' 的相关文章

随机推荐

  • 条件 DB2 SQL 查询

    假设我有一个名为 Company 的表 其键为 CompanyID 还有另一个名为 CompanyAddress 的相关表 它具有 CompanyID 外键 因此可以轻松建立连接 此 CompanyAddress 表可以具有给定公司的多个地
  • 从 cs 文件加载脚本并访问主机方法、属性等?

    我只是在和罗斯林玩 但不确定如何执行以下操作 为了保持简单 假设我有一个主机程序 它有一个像这样的方法 public void DisplayMessage string message MessageBox Show message 然后
  • 确定数组是否包含 n...n+m 的算法?

    我在 Reddit 上看到这个问题 但没有给出积极的解决方案 我认为在这里问这个问题是一个完美的问题 这是关于面试问题的帖子 编写一个方法 该方法接受大小为 m 的 int 数组 如果该数组包含数字 n n m 1 该范围内的所有数字以及仅
  • 实现自定义配置节处理程序

    从各种来源 包括 stackOverlflow 收集的信息 但是当我开始使用它时 我收到以下错误消息 配置属性 deviceconfig 可能不是从 ConfigurationSection 派生的 我现在已经在这个问题上挣扎了一整天 而且
  • 在java程序中执行bash命令

    自从我寻找以来已经有一段时间了 但我没有找到解决方案 我正在尝试在 Linux 上的 jar 文件中执行 bash 命令 为此 我尝试了很多方法 包括 Process p new ProcessBuilder java jar M1 MIA
  • 当变量值丢失时,Django 模板中的 Javascript 语法错误

    我有一个带有 AJAX 菜单的 Django 模板 单击不同的菜单项会重新加载页面的一部分 每次菜单单击都会通过 AJAX 调用 Django 视图函数并返回一些要在页面上显示的数据 我只加载主页中所有菜单项所需的所有 JS 据我所知 AJ
  • SerialPort.Read(....) 不尊重 ReadTimeOut

    与支付终端通信的一些旧代码中存在错误 在新的付款开始之前 代码会尝试清除串行端口的内部读取缓冲区 我将代码削减到最低限度 它使用 NET SerialPort 类型 设置读取超时为 50ms 然后它读取 512 字节并继续这样做 直到不再读
  • 是否可以在 C# 中返回对变量的引用? [复制]

    这个问题在这里已经有答案了 例如 我可以返回对双精度值的引用吗 这就是我想做的 ref double GetElement Calculate x y z return ref doubleArray x y z 像这样使用它 void f
  • socket.io 的 C 客户端

    我正在尝试使用socket io 建立从C 程序到节点服务器的连接 我能想到的唯一方法是从 C 程序向节点服务器发出 http 请求 所以我已经对此部分进行了一些介绍 现在我需要从C程序接收来自节点服务器的一些信息 是否有任何 c 客户端库
  • Python 凯撒密码解码器

    在我的课程中 我的任务是创建一个凯撒密码解码器 该解码器接受输入字符串并使用字母频率找到最佳可能的字符串 如果不确定这有多大意义 但让我们提出问题 编写一个执行以下操作的程序 首先 它应该读取一行输入 这是编码消息 由大写字母和空格组成 您
  • 使用 SALib 工具箱对测量数据进行 Python 敏感性分析

    我想了解 如何使用 SALib python 工具箱进行 Sobol 敏感性分析 研究参数和交叉参数影响 从最初的例子我应该这样做 from SALib sample import saltelli from SALib analyze i
  • 如何在 R 中将 `foreach` 和 `%dopar%` 与 `R6` 类一起使用?

    我在尝试使用时遇到了问题 dopar and foreach 与一个R6班级 四处搜索 我只能找到两个与此相关的资源 一个未答复所以问题和一个开放的GitHub问题 on the R6存储库 在一条评论 即 GitHub 问题 中 建议通过
  • Android - 一个选项卡中的多个片段

    我在网上搜索了很多有关在一个操作栏选项卡中包含多个片段的可能性的信息 这个问题最接近我的需求 但代码不起作用 是否有另一种可能性可以在一个选项卡中包含多个片段 这是StartActivity public class StartActivi
  • IIS 7.0 错误 HTTP 错误 500.19 - 内部服务器错误(错误代码 0x80070003)

    我的 Windows 2008 Server 上运行着 IIS7 它非常适合我之前托管的网站和文件夹 现在我尝试托管一个包含两个子文件夹的文件夹 子文件夹包含一些 图片 我已正确设置站点文件夹的 IIS IUSRS 权限 当我尝试浏览时 我
  • 常量值无法转换为 int

    我不明白为什么第 5 行无法编译 而第 4 行却可以 static void Main string args byte b 0 int i int 0xffffff00 b ok int j int 0xffffff00 byte 0 e
  • MVC 中的模型应该如何构建? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我刚刚掌握 MVC 框架 经常想知道模型中应该包含多少代码 我倾向于拥有一个具有如下方法的数据访问类 public function CheckUsername connection us
  • 在上传之前调整从图库或相机拍摄的图像的大小

    我的网站中有一个表单 允许用户上传照片 我的 Android 应用程序使用 WebView 来允许用户访问该网站 单击上传按钮后 应用程序允许用户在图库中现有的图像之间进行选择 或者拍摄新照片并上传该图像 我为此使用的代码是 showAtt
  • Cosmos DB - 图形 API - 导出 graphSON 并尝试使用迁移工具导入它

    我在新图中插入了一些顶点和边 我已将生成的 grapSON 保存在 json 文件中 然后我尝试使用迁移工具将该 json 文件导入到新图表中 它只起到了部分作用 我有一个带有顶点的新图 但它们没有这样的属性或边 id c39f435b 3
  • 如何停止由 Win32::Daemon 启动的 Win32 服务?

    我可以使用以下脚本在 Windows 10 Strawberry Perl 版本 5 30 1 上成功启动 Win32 服务 package Win32 XYZService use feature qw say use strict us
  • 用 execv 调用 'ls'

    我是系统调用和 C 编程新手 正在完成我的大学作业 我想调用 ls 命令并让它打印目录 我所拥有的 我添加了注释 以便您可以看到我通过每个变量看到的内容 int execute command cmd char full path 50 f