linux-execve函数调用的两个要点(坑)

本文探讨了Linux中execve函数的使用,强调了正确设置参数的重要性。通过实例,指出newargv数组应如何配置,特别是newargv[0]会自动成为调用程序的名称,以避免出错。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

**首先
函数原型与头文件

 #include <unistd.h>

int execve(const char *filename, char *const argv[],
                  char *const envp[]);

我所遇见的错误以及解决办法

错误解决
明明路径正确,文件名正确,但无法调用检查一下filename结尾是否多空格
可以调用程序,但就是无法执行参数注意参数的格式,在execve的man手册中有如下的一段示例代码
/* execve.c */

           #include <stdio.h>
           #include <stdlib.h>
           #include <unistd.h>

           int
           main(int argc, char *argv[])
           {
               char *newargv[] = { NULL, "hello", "world", NULL };
               char *newenviron[] = { NULL };

               if (argc != 2) {
                   fprintf(stderr, "Usage: %s <file-to-exec>\n", argv[0]);
                   exit(EXIT_FAILURE);
               }

               newargv[0] = argv[1];

               execve(argv[1], newargv, newenviron);
               perror("execve");   /* execve() returns only on error */
               exit(EXIT_FAILURE);
           }

char *newargv[] = { NULL, “hello”, “world”, NULL };

按照这个格式来设置的你的参数就没有问题了。
默认情况下,newargv[0]会被系统设置成你所调用程序的名字.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值